xpath - 根据条件 children 获取 parent Id

xpath - get parent Id by children with condition

我有 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>

我需要取所有 H 元素中的 Id,这些元素有 M 个元素,有 A 个元素 Id=G=BCId=S=F

因此在此示例中,输出应该只是 4326789,因为此 H 元素中的第一个 M 元素满足条件。

这是我试过的:

"//H/M/A[@Id='G'][contains(text(),'B C']/../../@Id"

并且它已经引发了一个错误(所以我什至没有尝试为 @Id='S' 添加 and)。

任何帮助将不胜感激!

尝试以下 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")]