2014-03-31 45 views
2

提取信息,我有這樣的XML文件如何從XML文件中使用XPath

<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文件

,它包含了一個應答器的大數目
所以,我怎麼能提取BB屬性附加傷害(IRI)時AA IRI = 「Y」

回答

1

可替代地,像這樣:

//A[aa/@IRI='Y']/bb/@IRI 

(我找它有與YIRI屬性的aa子元素A,然後導航到bb子元素和檢索IRI屬性)。

+0

絕對看起來更簡單,謝謝。 – alecxe

+0

謝謝你我的錯是我使用@ IRI =「Y」不@ @ IRI ='Y' – user3459346

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"