选择一个带有XPath的节点,其子节点包含特定的内部文本

D.R*_*.R. 6 xml xpath

给定以下XML:

<root>
    <li><span>abcText1cba</span></li>
    <li><span>abcText2cba</span></li>
</root>
Run Code Online (Sandbox Code Playgroud)

我想使用XPath 选择li具有包含内部文本- 的span子节点的所有元素。Text1

我从开始/root/li[span],然后尝试进一步检查:/root/li[span[contains(text(), 'Text1')]]

但是,这不会返回任何节点。我不明白为什么,有人可以帮我吗?

小智 17

//li[./span[contains(text(),'Text1')]] - have just one target result
//li[./span[contains(text(),'Text')]] - returns two results as target
Run Code Online (Sandbox Code Playgroud)

这种方法使用的东西在任何地方都没有得到很好的记录,只有少数人了解它的强大之处

在此处输入图片说明

Xpath 指定的元素有一个由另一个 xpath 定义的子节点

在此处输入图片说明

  • 这有点 OT,但我真的要感谢您的第一个屏幕截图,从中我了解到可以在 Chrome 的 JS 控制台中执行 XPath 查询! (3认同)

Dan*_*ama 10

只为读者。xpath是正确的。OP:也许xpath解析器不支持该表达式?

/root/li[span[contains(text(), "Text1")]]
Run Code Online (Sandbox Code Playgroud)


小智 1

试试这个 XPath

li/*[@innertext='text']
Run Code Online (Sandbox Code Playgroud)