我有200,000个XML文件需要解析并存储在数据库中。如何在Java中高效地解析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插入之前)。
谢谢
也许内存问题不是由DOM对象造成的。在这个例子中,你不显示数据库代码。如果您正在使用JDBC,但如果未正确释放,可能会耗尽内存。当您不再引用它们时,Java DOM和其他对象应该被GC'd查找,以查找引用被保存的对象。内存分析器会有所帮助。 – 2011-04-06 13:25:25
实际上还没有数据库代码。 – cbmeeks 2011-04-07 14:09:09
除了DOM和SAX,你看过vtd-xml(http://vtd-xml.sf.net)吗? – 2016-03-26 02:21:45