【问题标题】:Validating and Marshalling big XML file?验证和编组大型 XML 文件?
【发布时间】:2014-04-15 12:30:24
【问题描述】:

我有大小为 2GB 到 4GB 的大型 XML 文件,我是通过第三方供应商获得的。现在我需要做两种类型的操作 针对不同的用例:-

用例 1:-

验证 XML 中的一些值。

用例 2:-

将 XML 编组为 java 对象以进行一些处理。

现在我的问题是最好的方法是什么。我可以在不解析用例 1 的情况下验证特定元素吗?

第二个问题是我怎样才能在不出现OutOfMemory 异常或在用例 2 中充分利用内存的情况下编组这么大的文件?

【问题讨论】:

  • 如果是一次性活动,那么您可以通过增加堆内存使用 java 来做到这一点。
  • 不是一次性活动
  • 不要一次读取,使用 STaX API 读取文件(读取文件的一小部分)。例如,您可能还想看看 Spring Batch 以帮助您读取/处理该文件。

标签: java xml marshalling


【解决方案1】:

如果文档那么大,您将需要手动使用基于事件的解析器,例如 SAX 和 marshall 对象。这将允许您将文档作为流处理,而不是一次读取整个文档。

这是一篇简短的文章,讨论基于事件的解析与基于树的解析:

http://www.saxproject.org/event.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 2011-01-29
    • 2010-09-07
    • 1970-01-01
    相关资源
    最近更新 更多