XPath 1.0 - 来自下一节点的信息

时间:2014-09-05 16:28:18

标签: xml xpath xpath-1.0

我有这个部分XML:

 <Events>
   <Properties>
     <Property Descriptor="1">VALUE1</Property>
     <Property Descriptor="2">1</Property>
     <Property Descriptor="3">start</Property>
     </Properties>
   <Properties>
     <Property Descriptor="1">VALUE2</Property>
     <Property Descriptor="2">1</Property>
     <Property Descriptor="3">end</Property>
   </Properties>
 </Events>

如果我在“VALUE1”中,如何查询“VALUE2”[下一个PROPERTIES节点]?

我试过/next-sibling,但我不确定如何在这里应用

1 个答案:

答案 0 :(得分:2)

您可能想要following-sibling

从文档顶部进行演示:

//Property[@Descriptor="1"][1]/../following-sibling::Property[1]

如果您已经使用描述符1:

在该属性
./following-sibling::Property[1]

上述内容是基于对该问题的误读。相反:

xmlstarlet sel -t -m '//Property[@Descriptor="1"][1]' \
  -v '../following-sibling::Properties[1]/Property[@Descriptor=./@Descriptor][1]' \
  -n <foo.xml

第一个-m参数只找到第一个Property;魔法位于-v,它会查找兄弟Properties,并在其中找到Property,并且匹配Descriptor