使用XMLBeans或EMF部分加载xml文件

时间:2012-02-15 17:41:17

标签: java xml eclipse-emf xmlbeans

目前我正在使用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

1 个答案:

答案 0 :(得分:0)

对于大型XML文件,您最好使用流式XML解析器,而不是一次性读取整个文件并从中构建DOM。最新且最好的方法是使用Sun / Oracle的StaX (Streaming API for XML)。您可能也听说过SAX