我需要进入此XML结构中的第一个节点进行一些更改:
<root-node>
<child mandatory="val">
...
</child>
<child mandatory="val" optional1="opt1">
...
</child>
<child mandatory="val" optional1="opt2" optional2="opt3">
...
</child>
</root-node>
请注意,所有子项都具有强制属性,该属性在所有情况下都具有相同的值,以及一个或多个可选属性。但是如果我在//root-node/child[@mandatory='val']
上做一个XPath,我担心我也可能会引用其他节点,我不想触及它。
有没有办法更具体,并排除其结构中存在某个属性的节点?
答案 0 :(得分:6)
以下XPath将返回child
个mandatory
属性等于val
并且未定义optional1
属性的元素:
//child[@mandatory='val' and not(@optional1)]
如果您只需要第一个元素,那么只需将[1]
添加到表达式:
root-node/child[@mandatory='val' and not(@optional1)][1]