我有这个xml文件
<A>
<aa IRI="X"/>
<bb IRI="X1"/>
<bb IRI="X2"/>
</A>
<A>
<aa IRI="Y"/>
<bb IRI="Y1"/>
<bb IRI="Y2"/>
</A>
<A>
<aa IRI="Z"/>
<bb IRI="Z1"/>
<bb IRI="Z2"/>
</A>
。 。
在我的xml文件中,它包含大量的A balise
那么当一个IRI =&#34; Y&#34;
答案 0 :(得分:1)
检查precending-sibling
:
//A/bb[preceding-sibling::aa[@IRI="Y"]]/@IRI
演示(使用xmllint
工具):
$ cat input.xml
<test>
<A>
<aa IRI="X"/>
<bb IRI="X1"/>
<bb IRI="X2"/>
</A>
<A>
<aa IRI="Y"/>
<bb IRI="Y1"/>
<bb IRI="Y2"/>
</A>
<A>
<aa IRI="Z"/>
<bb IRI="Z1"/>
<bb IRI="Z2"/>
</A>
</test>
$ xmllint input.xml --xpath '//A/bb[preceding-sibling::aa[@IRI="Y"]]/@IRI'
IRI="Y1" IRI="Y2"
答案 1 :(得分:1)
或者,像这样:
//A[aa/@IRI='Y']/bb/@IRI
(找到A
aa
子元素,IRI
属性为Y
,然后导航到bb
子元素并检索{ {1}}属性)。