4

我需要到达此 XML 结构中的第一个节点以进行一些更改:

<root-node>
    <child mandatory="val">
        ...
    </child>
    <child mandatory="val" optional1="opt1">
        ...
    </child>
    <child mandatory="val" optional1="opt2" optional2="opt3">
        ...
    </child>
</root-node>

请注意,所有子项都有一个在所有情况下都具有相同值的强制属性,以及一个或多个可选属性。但是如果我在上面做一个 XPath,//root-node/child[@mandatory='val']我担心我可能会得到对其他节点的引用,我不想碰它。

有什么方法可以更具体并排除结构中存在特定属性的节点?

4

1 回答 1

7

以下 XPath 将返回属性等于且未定义属性的child元素:mandatoryvaloptional1

//child[@mandatory='val' and not(@optional1)]

如果您只需要第一个元素,那么只需添加[1]到表达式:

root-node/child[@mandatory='val' and not(@optional1)][1]
于 2013-06-17T08:13:01.697 回答