我有 200,000 个 XML 文件要解析并存储在数据库中。

这是一个示例:https://gist.github.com/902292

这和 XML 文件一样复杂。这也将在小型 VPS (Linode) 上运行,因此内存很紧。

我想知道的是:

1) 我应该使用 DOM 还是 SAX 解析器?因为每个 XML 都很小,所以 DOM 看起来更容易和更快。

2)关于所述解析器的简单教程在哪里? (DOM 或 SAX)

谢谢

编辑

即使每个人都建议使用 SAX,我还是尝试了 DOM 路线。主要是因为我找到了一个“更简单”的 DOM 教程,我认为由于平均文件大小约为 3k - 4k,因此很容易将其保存在内存中。

然而,我编写了一个递归例程来处理所有 200k 文件,它通过它们大约 40%,然后 Java 内存不足。

这是项目的一部分。
https://gist.github.com/905550#file_xm_lparser.java

我现在应该放弃 DOM 而只使用 SAX 吗?看起来像这样的小文件 DOM 应该能够处理它。

此外,速度是“ 足够快 ”。解析 2000 个 XML 文件大约需要 19 秒(在 Mongo 插入之前)。

谢谢

最佳答案

SAX 的速度总是比 DOM 快。但是既然你说 XML 文件很小,你可以继续使用 DOM 解析器。你可以做的一件事是创建一个线程池并在其中执行数据库操作。多线程更新将显着提高性能。

  • 拉利斯
  • 关于java - 如何在 Java 中高效解析 200,000 个 XML 文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5545619/

    10-11 22:32
    查看更多