如何使用xpath从xml文件中提取信息

时间:2014-03-31 13:55:27

标签: xml xpath

我有这个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;

时,如何提取bb属性(IRI)?

2 个答案:

答案 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}}属性)。