我有 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/