微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。