通过innertext选择XPath

kdt*_*kdt 51 xml xpath

我正在尝试从解析的XML文档中提取具有特定innertext的元素.我知道我可以选择一个具有特定innertext子元素的元素//myparent[mychild='foo'],但实际上我只想在这个例子中选择"mychild"元素.

<myparent>
  <mychild>
    foo
  </mychild>
</myparent>
Run Code Online (Sandbox Code Playgroud)

什么是"foo"的XPath查询将返回"mychild"节点?

glm*_*ndr 79

你试过这个吗?

//myparent/mychild[text() = 'foo']
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用self轴的快捷方式:

//myparent/mychild[. = 'foo']
Run Code Online (Sandbox Code Playgroud)

  • 或// myparent [mychild ='foo'] (5认同)
  • @Matt:如果OP想要选择mychild元素,那么你的解决方案将不起作用,它将选择myparent元素. (3认同)

小智 6

contains如果像这样找到测试,您可能会考虑使用该函数返回 true/false:

//mychild[contains(text(),'foo')]
Run Code Online (Sandbox Code Playgroud)

有关函数参考,请参阅XSLT、XPath 和 XQuery 函数


Pål*_*gbø 5

马特说过,但完整的解决方案:

//myparent[mychild='foo']/mychild
Run Code Online (Sandbox Code Playgroud)