【问题标题】:xpath - get parent Id by children with conditionxpath - 通过有条件的孩子获取父 ID
【发布时间】:2018-07-02 12:14:27
【问题描述】:

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

我需要在所有具有M 元素的H 元素中获取Id,这些元素具有Id=G=Id=G=BC 在文本中,以及Id=S =F

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

这是我尝试过的:

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

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

任何帮助将不胜感激!

【问题讨论】:

    标签: python xml xpath contains


    【解决方案1】:

    试试下面的 XPath 以获得所需的输出:

    //H[M[A[@Id="G" and .="B"] and A[@Id="S" and .="F"]]]/@id
    

    输出:

    4326789
    

    注意.="F"搜索文本内容等于"F"的节点如果你需要包含"F"A节点,你可以使用A[@Id="S" and contains(., "F")]

    【讨论】:

    • id of an H which contains M which contains A which has Id equal to G and text equal to B.这听起来很有道理。
    • 多么完美的答案!
    猜你喜欢
    • 1970-01-01
    • 2022-10-12
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 2018-04-19
    相关资源
    最近更新 更多