【问题标题】:Select particular xnode using xpath使用 xpath 选择特定的 xnode
【发布时间】:2014-02-21 10:25:51
【问题描述】:
<segmentFlightRef>
    <referencingDetail>
         <refQualifier>S</refQualifier> 
         <refNumber>4</refNumber> 
    </referencingDetail>
    <referencingDetail>
        <refQualifier>S</refQualifier> 
        <refNumber>1</refNumber> 
    </referencingDetail>
</segmentFlightRef>
<segmentFlightRef>
    <referencingDetail>
        <refQualifier>S</refQualifier> 
        <refNumber>5</refNumber> 
    </referencingDetail>
    <referencingDetail>
        <refQualifier>S</refQualifier> 
        <refNumber>1</refNumber> 
    </referencingDetail>
</segmentFlightRef>
  <segmentFlightRef>
    <referencingDetail>
        <refQualifier>S</refQualifier> 
        <refNumber>1</refNumber> 
    </referencingDetail>
    <referencingDetail>
        <refQualifier>S</refQualifier> 
        <refNumber>5</refNumber> 
    </referencingDetail>
</segmentFlightRef>

在上面的 xml 中,我想要其子节点“refNumber”具有值“5”和“1”的“segmentFlightRef”标签。并且必须考虑顺序,所以我只需要一个节点,其子节点的值依次为 5 和 1 请帮我 提前致谢

【问题讨论】:

    标签: c# xml vb.net xpath


    【解决方案1】:

    XPath

    //segmentFlightRef[./referencingDetail[./refNumber[text()="5"] and ./following-sibling::referencingDetail[./refNumber[text()="1"]]]]
    

    解释

    //segmentFlightRef[./referencingDetail[...]]
    

    选择具有子元素&lt;referencingDetail&gt;&lt;segmentFlightRef&gt; 元素,条件如下:

    标准 I

    ./refNumber[text()="5"]
    

    有子元素&lt;refNumber&gt;,内部文本等于"5"

    标准二

    and ./following-sibling::referencingDetail[./refNumber[text()="1"]]
    

    并且具有具有条件的下一个/兄弟节点&lt;referencingDetail&gt;:具有子元素&lt;refNumber&gt;,内部文本等于"1"

    【讨论】:

    • 您的 sn-p 有一些不必要的和/或令人困惑的事情。点构造./ 不是必需的,因为您已经在正确的上下文中。此外,您不必使用text(),因为它会自动被原子化(text() 会显着降低您的代码速度)
    【解决方案2】:

    XPath:

    //segmentFlightRef[referencingDetail[following-sibling::referencingDetail/refNumber = 1]/refNumber = 5]
    

    【讨论】:

    • 感谢您的回答,但我已经编辑了我的问题。我只需要单个节点。请再次参考
    猜你喜欢
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    • 2023-03-22
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多