我有以下xml:
<root>
<a>value1</a>
<b>value2</b>
<c>value3</c>
<a>value5</a>
<d>value4</d>
<b>value2</b>
<b>value3</b>
<a>value7</a>
</root>
a
如果节点后面没有其他 b 节点,我想选择第一个兄弟//b[text()='value2']
节点(在这种情况下,它将是<a>value5</a>
,<a>value7</a>
不应该选择)。
这样做的xpath是什么?
我正在使用 .net 4 和 xpath 1.0
更新
这就是我的出发点:我正在解析的文档有一个非常愚蠢的结构,可以这样描述
<root>
<key>key-value</key>
<some-other-nodes>some other values</some-other-nodes>
<key>an other key value</key>
<value>the value</value>
</root>
我描述的文档包含以下键值对:key-value->{null} an other key value->{the value}
如果键节点重复,则重置该key
值。我需要一个 xpath 来选择特定键的值。因为在上面的示例中,第二个匹配的//b[text()='value2']
后面是<b>value3</b>
,所以键被重置为value3