2012-01-19 34 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? –