我的XML看起来像这样:
<doc>
<H Id="4732894">
<M Ind="aa">
<A Id="G">A</A>
<A Id="S">M</A>
</M>
</H>
<H Id="4326789">
<M Ind="aa">
<A Id="G">B</A>
<A Id="S">F</A>
</M>
<M Ind="ab">
<A Id="G">B</A>
<A Id="S">M</A>
</M>
<M Ind="ac">
<A Id="G">3</A>
<A Id="S">F</A>
</M>
<M Ind="ad">
<A Id="G">2</A>
<A Id="S">F</A>
</M>
</H>
</doc>
我需要获取Id
个H
元素M
元素A
元素Id=G
元素B
= C
或文本中的Id=S
,以及F
= 4326789
。
因此,在此示例中,输出应该只是M
,因为此H
元素中的第一个"//H/M/A[@Id='G'][contains(text(),'B C']/../../@Id"
元素符合条件。
这是我尝试过的:
and
并且它已经引发了错误(因此我甚至没有尝试为@Id='S'
添加{{1}}。
任何帮助将不胜感激!
答案 0 :(得分:2)
尝试使用以下XPath获取所需的输出:
//H[M[A[@Id="G" and .="B"] and A[@Id="S" and .="F"]]]/@id
输出:
4326789
请注意,.="F"
搜索文本内容等于 "F"
的节点如果您需要包含的A
节点 "F"
,您可以使用A[@Id="S" and contains(., "F")]