使用xpath,当节点包含多个值时,如何获取特定的xml节点值?

时间:2016-05-23 13:07:43

标签: xml xpath

这是我想从中检索值的xml。

<dsml>
<entries>
<entry dn="uid=7686,c=in,ou=pages,o=example.com">
<att name="uid">
<value>7568766</value>
<value>756876634</value>
</att><att name="callname">
<value>jhsadkjh</value>
<value>jhsadkjhakjdgakj</value>
</att></entry>
</entries>
</dsml>

正如您所看到的,每个属性都有2个与之关联的值。我想只获取第一个。 下面是我使用的一些xpath:

//dsml/entries/entry/att[@name = 'uid']/value[1]
//dsml/entries/entry/att[@name = 'uid']/value/[1]

但它总是抛出异常。

3 个答案:

答案 0 :(得分:2)

此xpath仅从名为“att”的每个标记中获取第二个“value”标记:

//dsml/entries/entry/att/value[1]

或者,如果您只想从“uid”获取'value',您可以使用:

//dsml/entries/entry/att[@name='uid']/value[1]

答案 1 :(得分:0)

attattr不是同一个元素。此外,</enteries>无法关闭<entries>

以下内容适用于xsh

/dsml/entries/entry/att[@name = 'uid']/value[1] 

答案 2 :(得分:0)

您对同一元素使用不同的名称。 entries为开放标记,enteries为结束标记。这些名称应该相同。同样在xml中,元素的名称为att,在Xpath中,您试图找到attr