-1

我有这个部分 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了,但我不确定如何在这里应用它

4

1 回答 1

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,它寻找兄弟姐妹PropertiesProperty在其中找到匹配的 a Descriptor

于 2014-09-05T16:32:33.513 回答