我有以下XML代码段:
<root>
<CharacteristicUse>
<UseArea>Specification_Characteristics</UseArea>
<Value>
<ValueID>123</ValueID>
</Value>
<Value>
<ValueID>444</ValueID>
</Value>
<Value>
<ValueID>555</ValueID>
</Value>
<Value>
<ValueID>777</ValueID>
</Value>
<Value>
<ValueID>888</ValueID>
</Value>
</CharacteristicUse>
</root>
我希望能够获得Value节点的所有前后兄弟节点,其子节点ValueID为text = 555
我一直试图结合以下方式:
/root/CharacteristicUse/Value[ValueID='555']/following-sibling::* | preceding-sibling::*
但是,它只会让我回到下面的兄弟姐妹。 是否可以使用一个查询来获得输出:
<Value>
<ValueID>123</ValueID>
</Value>
<Value>
<ValueID>444</ValueID>
</Value>
<Value>
<ValueID>777</ValueID>
</Value>
<Value>
<ValueID>888</ValueID>
</Value>
答案 0 :(得分:1)
一种方式是蛮力:
/root/CharacteristicUse/Value[ValueID='555']/preceding-sibling::* | /root/CharacteristicUse/Value[ValueID='555']/following-sibling::*
这也包括“UseArea”节点,不确定是否需要它。
或者如果您想要的只是所有非特定值的值,那么
/root/CharacteristicUse/Value[not(ValueID='555')]
更直接。
答案 1 :(得分:0)
我找到了答案。 xpath看起来像:
/root/CharacteristicUse/Value[ValueID='555']/following-sibling::Value | /root/CharacteristicUse/Value[ValueID='555']/preceding-sibling::Value