Xml XPath选择不使用';没有特定的可选属性

Xml XPath选择不使用';没有特定的可选属性,xml,xpath,Xml,Xpath,我需要访问此XML结构中的第一个节点以进行一些更改: <root-node> <child mandatory="val"> ... </child> <child mandatory="val" optional1="opt1"> ... </child> <child mandatory="val" optional1="opt2" optional2="

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

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

...
...
...
请注意,所有子级都有一个在所有情况下都具有相同值的强制属性,以及一个或多个可选属性。但是,如果我在
//根节点/child[@mandatory='val']
上执行XPath,我担心可能会得到对其他节点的引用,而我不想触及这些节点


是否有更具体的方法来排除结构中存在特定属性的节点?

以下XPath将返回
子元素,这些元素的
强制属性等于
val
,并且没有定义
optional1
属性:

//child[@mandatory='val' and not(@optional1)]
如果只需要第一个元素,则只需将
[1]
添加到表达式:

root-node/child[@mandatory='val' and not(@optional1)][1]

谢谢你的快速回复。我会试试看。