我正在尝试从解析的XML文档中提取具有特定innertext的元素。我知道我可以使用//myparent[mychild='foo']
选择一个具有特定innertext子元素的元素,但实际上我只想在这个例子中选择“mychild”元素。
<myparent>
<mychild>
foo
</mychild>
</myparent>
将返回“mychild”节点的“foo”的XPath查询是什么?
答案 0 :(得分:78)
你试过这个吗?
//myparent/mychild[text() = 'foo']
或者,您可以使用self
轴的快捷方式:
//myparent/mychild[. = 'foo']
答案 1 :(得分:4)
马特说,但完整的解决方案:
//myparent[mychild='foo']/mychild
答案 2 :(得分:3)
如果这样找到测试,您可以考虑使用contains
函数返回true / false:
//mychild[contains(text(),'foo')]
有关功能参考,请参见XSLT, XPath, and XQuery Functions
答案 3 :(得分:0)
根据 HTML:
<myparent>
<mychild>
foo
</mychild>
</myparent>
文本为 foo 的 <mychild>
元素位于其父 <myparent>
标签内,文本包含 leading 和 trailing强> 空格 字符。
因此要选择 <mychild>
元素,您可以使用以下任一解决方案:
使用 normalize-space()
:
//myparent/mychild[normalize-space()='foo']
使用 contains()
:
//myparent/mychild[contains(., 'foo')]
忽略您也可以使用的父 <myparent>
标记:
使用 normalize-space()
:
//mychild[normalize-space()='foo']
使用 contains()
:
//mychild[contains(., 'foo')]