2012-01-19 35 views
0

我想對一個非常大的xml進行一些DOM-stlye處理,將一些節點轉換爲其他節點。Java中的XML管道

這是我有什麼

... 
<node> 
    <stuff>text-and-numbers</stuff> 
</node> 
... 

一個例子,這是我需要輸出

... 
<node> 
    <info>some text</info> 
    <more>some text</more> 
    <id>some text</id> 
</node> 
... 

所有<node>...</node>輸出部內的信息被提取編程處理的的<node>text-and-numbers</node>輸入。我的意思是,我有一個功能getInfo(someText),它返回輸出的內容<node>

我已經得到了以DOM方式完成它的代碼,但問題在於XML太大,它需要太多的內存,所以我想以另一種方式來完成。

我希望有人能幫助我。

+0

你是從文件中獲取這個XML嗎? –

+0

是的,但我設法在SAX中重建它,擴展了我在網上找到的一個XMLWriter類。 –

回答

3

我想你應該看看SAX或StAX。前者意味着不必將整個DOM樹保存在內存中;後者是一個流解析器。

+0

謝謝,但SAX的問題在於,將所有輸入XML「轉儲」到輸出而不寫很多代碼很困難是相當困難的。我還沒有找到任何「簡單」的StAX流水線的例子... –

+0

選擇你的毒藥 - 編寫更多的代碼或依靠DOM。如果你的XML很大,你沒有太多的選擇。 – duffymo

+0

是的,我現在...您是否有任何可以找到的「管道」StAX示例,以再次比較SAX? –