2014-02-21 60 views
0
<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我想要“segmentFlightRef”标记的子节点“refNumber”具有值“5”和“1”。和顺序必须考虑,所以我需要它的子节点值5和1 sequencially 请帮我 感谢事先只在一个节点使用xpath选择特定的xnode

回答

0

的XPath:

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

thanx为您的答案,但我编辑了我的问题。我只需要单个节点。请再次参考 –

+0

@BrijeshGandhi更新了我的答案。 – dirkk

+0

非常感谢您 –

1

的XPath

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

说明

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

选择<segmentFlightRef>为元素的子元素<referencingDetail>与标准如下:

标准我

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

有子元素<refNumber>与内部文本等于"5"

标准II

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

,并与标准的下一个/同级节点<referencingDetail>:具有内部文本子元素<refNumber>等于"1"

+0

对于您的代码段,有些事情是不必要的和/或令人困惑的。因为您已经在正确的上下文中,因此不需要点构造'。/'。另外,你不必使用'text()',因为它会被自动雾化(并且'text()'可以显着减慢你的代码的速度) – dirkk