xpath php按顺序选择文本和子节点

时间:2014-10-08 09:45:02

标签: xml xpath

我有一个像这样的xml:

<p>tex text</p>
<p><a2>subchild text</a2> text text text</p>

我想以书面顺序提取所有文本(来自p和所有子节点)并将结果放入字符串中。 我使用以下查询

$text = $currentNode->xpath("p[not(@class='notes')]/text())
foreach($text as $tex) {
    $finalText .= $tex." ";
}

问题是我无法获取子节点文本,例如节点&#39; a2&#39;在我的例子中。 有帮助吗?感谢

1 个答案:

答案 0 :(得分:0)

/ text()仅查找直接文本节点,// text()查找直接或较低节点。它是descendent-or-self :: text()的缩写。

所以你的查询只需要一个额外的斜杠:

$text = $currentNode->xpath("p[not(@class='notes')]//text());

(假设您只想要文本而不是子元素的副本)。