如何选择没有特定子节点的节点?

时间:2010-10-11 12:50:47

标签: xpath

一个相当简单的问题...... XML片段:

<bean id='Juicer'>
    <property name="electric">
        <value>false</value>
    </property>
</bean>

<bean id='Oven'>
    <property name="electric">
        <value>true</value>
    </property>
    <property name="wattage">
        <value>1000</value>
    </property>
</bean>

我正在尝试编写一个xpath查询,该查询将选择没有bean的所有<property name="wattage">

我无法弄清楚如何在xpath中说“没有这个孩子的豆子”。

请注意,每次“瓦数”不存在时,我都不能依赖“电”属性。 (另外,这个例子有点人为)。

谢谢:)

4 个答案:

答案 0 :(得分:6)

好的,经过一番挖掘,我发现了它:

//bean[not (property[@name='wattage'])]

确实很简单:P

答案 1 :(得分:4)

尝试

//bean[not(property[@name='wattage'])]

答案 2 :(得分:2)

如果当前节点是bean元素的父元素,则选择所需元素的一个XPath表达式为

bean[not(property/@name = 'wattage')]

这可能是最简单的表达式(只有一个谓词)。

这个用英文翻译的表达说:

选择当前节点的所有bean子节点,其name个子节点的property属性不是字符串"wattage"

答案 3 :(得分:0)

//bean[not(@name = 'wattage')]