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