更正 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>
我只想获取<div class="h1">2008 Honda Accord Coupe
的内部文本,而不包括<small>inner text</small>
我正在执行以下 XPath 查询://div[@class='h1']
,它肯定会返回整个 <div>...</div>
节点。
如果没有<small>...</small>
,我怎样才能只获取部分
谢谢
【问题讨论】:
除非您没有指定您使用的 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 内部文本的主要内容,如果未能解决你的问题,请参考以下文章
(CSS / jQuery/ XPath) 用于从姐妹/兄弟节点 (DOM) 获取内部文本的选择器
XPath 搜索所有文本节点,而不是任何其他子节点的内部文本
Selenium 和 xpath:找到一个带有类/ID 的 div 并验证里面的文本
HTML Agility Pack - 使用 Align=left 样式从 DIV 获取文本