XPath - 选择最后发生的字符串

时间:2014-04-06 21:12:50

标签: xml xpath xpath-2.0

我有这棵树:

<Events>
 <Properties>
   <Property Descriptor=100>1378314022</Property>
   <Property Descriptor=200>ABC1234</Property>
 </Properties>
 <Properties>
   <Property Descriptor=100>1378314023</Property>
   <Property Descriptor=200>ABC1234</Property>
 </Properties>
 <Properties>
   <Property Descriptor=100>1378314024</Property>
   <Property Descriptor=200>ABC1234</Property>
 </Properties>
 <Properties>
   <Property Descriptor=100>1378314022</Property>
   <Property Descriptor=200>123456</Property>
 </Properties>
 <Properties>
   <Property Descriptor=100>1378314023</Property>
   <Property Descriptor=200>123456</Property>
 </Properties>
 <Properties>
   <Property Descriptor=100>1378314024</Property>
   <Property Descriptor=200>123456</Property>
 </Properties>

</Events>

如何选择没有重复项的<Descriptor=200>值?例如,在这种情况下,我只需要选择ABC1234123456一次。

更新:我需要在Events级别进行迭代,然后选择不同的字符串。

2 个答案:

答案 0 :(得分:0)

您想获得最后一个,还是没有重复的值?

没有重复的值:

distinct-values(//Property[@Descriptor=200])

最后一次

(//Property[@Descriptor=200])[last()]

(假设Descriptor是一个属性,你在发布xml时丢失了<Property,因为你发布的文件不是有效的xml)

答案 1 :(得分:0)

使用此XPath,它会选择不同的值:

//Property[@Descriptor = 200]
    [not(. = ../following-sibling::Properties/Property[@Descriptor = 200])]