目前我正在使用EMf来读取~400 xml文件。每个文件大约有100.000行,包含描述性数据(~10%,类似于ID和对其他元素的引用)和实际数据(~90%,长字符串/文本)。
我的问题是当我读取所有文件时,我得到OutOfMemoryExceptions。我的想法是解决这个问题:只加载ID等,如果用户试图访问当前未加载的数据,它将在后台加载。
有关如何使用EMF或XMLBeans实现此目的的任何想法吗?
编辑:
我的XML有这样的结构:
<A>
<B>
<C></C>
<C></C>
</B>
<B>
<C></C>
</B>
</A>
我想在任何情况下加载根节点。在这个例子中,我想跳过节点C,以便我的Object树看起来像这个
A
|-B
\-B
答案 0 :(得分:0)
对于大型XML文件,您最好使用流式XML解析器,而不是一次性读取整个文件并从中构建DOM。最新且最好的方法是使用Sun / Oracle的StaX (Streaming API for XML)。您可能也听说过SAX。