2014-03-18 91 views
-1

我有我不得不解析我找回一些數據的複雜的XML字符串,這裏是內容:Java的XML解析與很多層面

<root1> 
    <root2> 
     <A>something</A> 
     <B>something</B> 
     <C> 
      <D> 
       <GetE>DataE</GetE> 
       <GetF>DataF</GetF> 
       <G>something</G> 
       <H>something</H> 
       <I> 
        <J> 
         <GetK>DataK</GetK> 
         <GetL>DataL</GetL> 
        </J> 
       </I> 
      </D> 
      <D> 
       <GetE>DataE</GetE> 
       <GetF>DataF</GetF> 
       <G>something</G> 
       <H>something</H> 
       <I> 
        <J> 
         <GetK>DataK</GetK> 
         <GetL>DataL</GetL> 
        </J> 
       </I> 
      </D> 
     </C> 
    </root2> 
</root1> 

我想打印的GetE內容,GetFGetKGetL

例如:

格特= DataE,GETF = DATAF,GetK = DATAK,GetL = DATAL

格特= DataE,GETF = DATAF,GetK = DATAK,GetL = DATAL

...

要我的字符串數據轉換爲XML,我用這個功能In Java, how do I parse XML as a String instead of a file?

任何想法嗎?

+0

您的意思是您想要選擇具有這些名稱的所有節點,例如在XPath表達式中? –

+0

你是什麼意思「多根」?該文檔與任何XML文檔一樣,沒有多個根元素;這就是使根元素成爲根元素的原因。 – chrylis

+0

我想舉個例子:DataE,DataF,DataK,DataL,@chrylis:我會說多個級別..這是一個錯誤 – zeomega

回答

0

首先,檢查this answer這是更適用於您的情況。 XPath是一種方便且易於使用的技術來提取您所尋求的信息,但性能要求可能會另行規定。

的XPath表達式,你的情況,會是這樣,例如::

"root1/root2/C/D/GetE/text()" 
"root1/root2/C/D/GetF/text()" 

但是,正如其他人評論說,中 「root1 /根-2/C/d /格特」 不返回單個節點,所以你必須決定你將如何代表信息。

0

也許有一種更簡單的方法,但SAXParser會完成這項工作。