【问题标题】:Partially load a xml file with XMLBeans or EMF使用 XMLBeans 或 EMF 部分加载 xml 文件
【发布时间】:2012-02-17 19:53:51
【问题描述】:

目前我正在使用 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,以便我的对象树看起来像这样

A
|-B
\-B

【问题讨论】:

  • Absurd-Mind:大约一周过去了,你只有一个答案。请接受我的回答,或澄清您的问题,以便您获得更多答案。

标签: java xml eclipse-emf xmlbeans


【解决方案1】:

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

【讨论】:

  • 到达感兴趣的元素后,您可以使用XmlObject.Factory.parse(xmlStreamReader) 从该位置创建一个XmlBean。
猜你喜欢
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 2018-06-30
  • 2011-02-02
  • 1970-01-01
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多