我有以下XML:
<products>
<product>
<name>Flat Panel Monitor</name>
<code>LS123</code>
<attributes>
<attribute>
<group>Color</group>
<values>
<value>Red</value>
<value>Blue</value>
<value>Green</value>
</values>
</attribute>
<attribute>
<group>Warranty</group>
<values>
<value>5 Year</value>
</values>
</attribute>
</attributes>
</product>
</products>
我将使用什么Xpath来获取具有组节点值“Color”的属性节点的所有值? /product/attributes/attribute/values/value
的标准Xpath将返回所有值,包括保修组内的值,但我需要将它们分开。
我猜在伪代码中我所说的是得到所有“值”,其中父节点“值”是节点“group”的兄弟,其值为“Color” - 希望这是可能的吗?
感谢。
答案 0 :(得分:4)
您需要使用方括号来过滤节点,因此:
/product/attributes/attribute[group='Color']/values/value
答案 1 :(得分:3)
您只需要那些value
个group
'叔叔'Color
的{{1}}个节点,所以请将其作为条件放在您已经解决的xpath上:
/product/attributes/attribute/values/value[../../group = 'Color']
这表示要使value
节点有效,它必须有父节点,父节点的子节点值为Color
。
答案 2 :(得分:1)
又一个选择:
//value[ancestor::attribute[group='Color']]
答案 3 :(得分:0)
//values[preceding-sibling::group[text()="Color"]]/value