如何使用XPath获取XML中的所有后代文本内容

动物园

XML文件

<TEXT>
    <DESCR>
         Here is the first part...
         <PLUS>The second</PLUS>
         And the third
    </DESCR>
</TEXT>

我期望得到什么:

Here is the first part...The secondAnd the third

我实际得到的是:

Here is the first part...And the third.

我尝试了descendant-or-self::*xPath函数,子级和后代,没有结果。

如果有人可以告诉我如何在子节点中获取文本。

克休斯

XPath 1.0

不能在XPath 1.0中执行给定节点的所有文本后代的串联。您可以在XPath中选择节点,

/TEXT/DESCR//text()

但随后您必须使用托管语言执行串联。

在PHP中:

$xml = '<TEXT>
    <DESCR>
         Here is the first part...
         <PLUS>The second</PLUS>
         And the third
    </DESCR>
</TEXT>';
$dom = new DOMDocument();
$dom->loadXML($xml);
$x= new DOMXpath($dom);
foreach($x->query("/TEXT/DESCR//text()") as $node) echo trim($node->textContent); 

将输出您要求的结果:

Here is the first part...The secondAnd the third

[或者,如果您没有其他理由要遍历文本节点,则将foreach上面循环替换为:]

$xml = '<TEXT>
    <DESCR>
         Here is the first part...
         <PLUS>The second</PLUS>
         And the third
    </DESCR>
</TEXT>';
$dom = new DOMDocument();
$dom->loadXML($xml);
$x= new DOMXpath($dom);
echo str_replace(PHP_EOL, '', $x->evaluate('normalize-space(/TEXT/DESCR)'));

产生:

Here is the first part... The second And the third

XPath 2.0

可以在XPath 2.0中执行给定节点的所有文本后代的串联:

string-join(/TEXT/DESCR//text(), '')

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取所有后代的纯文本形式的元素内容

来自分类Dev

查找所有以xml开头的元素中包含文本的后代

来自分类Dev

使用linq或xpath获取xml中的所有文本节点

来自分类Dev

如何获取XML后代中元素的所有出现

来自分类Dev

如何使用Xpath在文本中的特定字符之前获取内容

来自分类Dev

直接子文本与所有后代文本的XPath?

来自分类Dev

直接子文本与所有后代文本的XPath?

来自分类Dev

Xpath中文档中没有文本节点后代的所有元素?

来自分类Dev

jQuery获取所有后代节点,包括文本节点

来自分类Dev

如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

来自分类Dev

如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

来自分类Dev

如何在Linux中的C中获取PID的所有后代子进程ID

来自分类Dev

如何使用python获取XML中的所有标签?

来自分类Dev

使用xpath获取父节点内的所有文本

来自分类Dev

从框架中获取所有条目文本内容

来自分类Dev

如何使用xpath获取xml中的w:p子项提供的w:t内容

来自分类Dev

如何使用xpath获取xml中的w:p子项提供的w:t内容

来自分类Dev

如何获取父容器的所有后代元素?

来自分类Dev

使用 java 和 Xpath 获取 xml 的所有属性

来自分类Dev

如何获取某个XML标签之间的所有内容

来自分类Dev

使用xpath获取html元素的文本内容

来自分类Dev

如何在特定标签内的xml中获取所有嵌套标签和文本?

来自分类Dev

使用 C# 从 XML 元素的所有实例中获取文本

来自分类Dev

如何使用XPath从根标签中获取所有不同的元素标签

来自分类Dev

如何使用给定的 xpath scala 从 xml 中检索所有节点

来自分类Dev

xpath:如何使用xpath获取特定的文本?

来自分类Dev

如何使用Robot Framework获取网页元素的所有xpath?

来自分类Dev

模式具有相似文本时,如何使用RegEx获取Python中的所有匹配项?

来自分类Dev

XML:如何使用XPath捕获2条处理指令之间的所有文本节点和节点

Related 相关文章

  1. 1

    获取所有后代的纯文本形式的元素内容

  2. 2

    查找所有以xml开头的元素中包含文本的后代

  3. 3

    使用linq或xpath获取xml中的所有文本节点

  4. 4

    如何获取XML后代中元素的所有出现

  5. 5

    如何使用Xpath在文本中的特定字符之前获取内容

  6. 6

    直接子文本与所有后代文本的XPath?

  7. 7

    直接子文本与所有后代文本的XPath?

  8. 8

    Xpath中文档中没有文本节点后代的所有元素?

  9. 9

    jQuery获取所有后代节点,包括文本节点

  10. 10

    如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

  11. 11

    如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

  12. 12

    如何在Linux中的C中获取PID的所有后代子进程ID

  13. 13

    如何使用python获取XML中的所有标签?

  14. 14

    使用xpath获取父节点内的所有文本

  15. 15

    从框架中获取所有条目文本内容

  16. 16

    如何使用xpath获取xml中的w:p子项提供的w:t内容

  17. 17

    如何使用xpath获取xml中的w:p子项提供的w:t内容

  18. 18

    如何获取父容器的所有后代元素?

  19. 19

    使用 java 和 Xpath 获取 xml 的所有属性

  20. 20

    如何获取某个XML标签之间的所有内容

  21. 21

    使用xpath获取html元素的文本内容

  22. 22

    如何在特定标签内的xml中获取所有嵌套标签和文本?

  23. 23

    使用 C# 从 XML 元素的所有实例中获取文本

  24. 24

    如何使用XPath从根标签中获取所有不同的元素标签

  25. 25

    如何使用给定的 xpath scala 从 xml 中检索所有节点

  26. 26

    xpath:如何使用xpath获取特定的文本?

  27. 27

    如何使用Robot Framework获取网页元素的所有xpath?

  28. 28

    模式具有相似文本时,如何使用RegEx获取Python中的所有匹配项?

  29. 29

    XML:如何使用XPath捕获2条处理指令之间的所有文本节点和节点

热门标签

归档