更正 XPath 查询以获取 div 内部文本

Posted

技术标签:

【中文标题】更正 XPath 查询以获取 div 内部文本【英文标题】:Correct XPath query to fetch div inner text 【发布时间】:2013-06-12 20:54:17 【问题描述】:

我正在使用 XPath 查询 html 文档,其中有以下 div 有文本:

<div class="h1">2008 Honda Accord Coupe<small> — Wuse II</small></div>

我只想获取&lt;div class="h1"&gt;2008 Honda Accord Coupe 的内部文本,而不包括&lt;small&gt;inner text&lt;/small&gt;

我正在执行以下 XPath 查询://div[@class='h1'],它肯定会返回整个 &lt;div&gt;...&lt;/div&gt; 节点。

如果没有&lt;small&gt;...&lt;/small&gt;,我怎样才能只获取部分

谢谢

【问题讨论】:

除非您没有指定您使用的 XML 解析器,否则这很难说。例如。使用 SimpleXML,您只需将该元素转换为字符串即可。使用 DOMDocument,您可以查询文本节点,如 One Trick Pony 所示。但正确的答案是:这取决于您使用的库/解析器。你不说是哪一个,所以很难回答,因为缺少信息。 【参考方案1】:

使用text()函数:

//div[@class='h1']/text()

phpFiddle测试

【讨论】:

【参考方案2】:

你可以这样做:

$name = trim($xpath->query('//div[@class="h1"]')->item(0)->childNodes->item(0)->nodeValue);

var_dump($name);

【讨论】:

以上是关于更正 XPath 查询以获取 div 内部文本的主要内容,如果未能解决你的问题,请参考以下文章