我有一个带有节点(Z)的 XML 文件,其中包含随机顺序的子节点(H、W、P):
<X>
<Y>
<Z>
<H>Hello</H>
<W>World</W>
<P>!</P>
</Z>
<Z>
<P>!</P>
<W>World</W>
<H>Hello</H>
</Z>
</Y>
</X>
我想以给定的顺序选择子节点的内容。
我绑了这个:
/X/Y/Z/*[self::H or self::W or self::P]/text()
但这将保持错误的顺序:
Hello World !
! World Hello
我需要一些方法来按顺序选择相对于 H 的 W 和 P。我怎样才能做到这一点?
我试过这个:
/X/Y/Z/(H,W,P)/text()
但是顺序仍然是错误的。
编辑:问题表明我只需要文本部分,但我需要节点而不仅仅是文本。原因是,XPath text() 函数似乎有 CDATA 部分的问题。