XPath 参数值未在表达式中求值

XPath Param Value Is Not Evaluating In Expression

@Value='1' 似乎没有在下面的表达式中计算,因为它 returns SEventData 的两个节点,而不是只有一个 @Value 为“1”的节点。我错过了什么?

来源:

<CData>
<SData SKey="006" >

<SEventData SEventOID="UNS" SEventRepeatKey="2">
<FData FOID="REQUIRED" FRepeatKey="1">
<ItemGroupData ItemGroupOID="REQUIRED" ItemGroupRepeatKey="0" 
TransactionType="Upsert">
<ItemData ItemOID="REQ" Value="0"  />
</ItemGroupData>
</FData>
</SEventData>

<SEventData SEventOID="UNS" SEventRepeatKey="3">
<FData FOID="REQUIRED" FRepeatKey="1">
<ItemGroupData ItemGroupOID="REQUIRED" ItemGroupRepeatKey="0" 
TransactionType="Upsert">
<ItemData ItemOID="REQ" Value="1"  />
</ItemGroupData>
</FData>
</SEventData>

</SData>
</CData>

用表达式

//CData[.//SData[@SKey='006']/SEventData/FData/ItemGroupData/ItemData[@ItemOID='REQ' and @Value='1']]//SEventData    

returns 两个而不是一个

Element='<SEventData SEventOID="UNS" SEventRepeatKey="2">
  <FData FOID="REQUIRED" FRepeatKey="1">
     <ItemGroupData ItemGroupOID="REQUIRED"
                 ItemGroupRepeatKey="0"
                 TransactionType="Upsert">
        <ItemData ItemOID="REQ" Value="0"/>
     </ItemGroupData>
  </FData>
</SEventData>'
Element='<SEventData SEventOID="UNS" SEventRepeatKey="3">
  <FData FOID="REQUIRED" FRepeatKey="1">
     <ItemGroupData ItemGroupOID="REQUIRED"
                 ItemGroupRepeatKey="0"
                 TransactionType="Upsert">
        <ItemData ItemOID="REQ" Value="1"/>
     </ItemGroupData>
  </FData>
</SEventData>'

您可以使用此 XPath 来找到您要查找的内容:

//SEventData[.//FData/ItemGroupData/ItemData[@ItemOID='REQ' and @Value='1']]

您当前的 XPath 表达式 returns 根节点 //CData 包含以下条件:.//SData[@SKey='006']/SEventData/FData/ItemGroupData/ItemData[@ItemOID='REQ' and @Value='1'].
所以是的,//CData 里面有上面的条件,当你试图在 //CData 里面找到 //SEventData 时,它 returns 你们两个 //SEventData 节点。
你在这里应该做的是根据你的情况定位//SEventData节点本身,就像我在开头写的:

//SEventData[.//FData/ItemGroupData/ItemData[@ItemOID='REQ' and @Value='1']]