在Java中读取XML元素列表

我想迭代一个XML文档,它本质上是一个相同结构的XML元素列表.元素将被序列化为Java对象.

<root>
    <element attribute="value" />
    <element attribute="value" />
    <element attribute="value" />
    ...
</root>

根元素中有很多元素.我宁愿不将它们全部加载到内存中.我意识到我可以使用SAX处理程序,但使用SAX处理程序将所有内容反序列化为Java对象似乎相当迟钝.我发现JDOM非常容易使用,但据我所知,JDOM总是会解析整个树.有没有办法可以使用JDOM一次解析一个子元素?

使用JDOM的另一个原因是它使得为相应的Java对象编写序列化/反序列化代码变得容易,如果不是完全在内存中则这些代码是没有意义的.但是,我不想同时将所有Java对象加载到内存中.相反,我想迭代它们一次.

更新:这是一个如何在dom4j:http://docs.codehaus.org/display/GROOVY/Reading+XML+with+Groovy+and+DOM4J中执行此操作的示例.无论如何在jdom中执行此操作?

解决方法:

减少内存需求的一种简单方法是使用XPath和JDOM来查询XML的子集,并仅获取满足查询的那些位.

否则你可以查看这个interesting hint from Elliotte Rusty Harold,它表示你想要的流媒体API在那里,只是没有做广告:

JDOM does have a streaming API. It’s just sort of hidden and not widely
advertised or explained. In XOM, I made this approach a lot more
explicit and documented it. If a streaming tree model is what you want,
you’re probably better off with XOM, but if you have to stick with JDOM
then reading the XOM examples will probably give you enough clue about
how to use JDOM in streaming mode.

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念