我们有一个新要求:
有一些 BIG xml 文件不断进入我们的系统,我们需要立即使用 Java 快速处理它们。该文件很大,但我们处理所需的信息在一个非常小的元素内。……
在我们开始处理之前,从大文件中提取这小部分数据的最佳方法是什么?如果我们尝试加载整个文件,由于大小,我们将立即出现内存不足错误。我可以使用Java中的有效方法来获取 ..data..data..data.. 数据元素而无需逐行加载或读取文件。是否有任何 SAX 解析器可以用来完成这项工作?
谢谢
我们有一个新要求:
有一些 BIG xml 文件不断进入我们的系统,我们需要立即使用 Java 快速处理它们。该文件很大,但我们处理所需的信息在一个非常小的元素内。……
在我们开始处理之前,从大文件中提取这小部分数据的最佳方法是什么?如果我们尝试加载整个文件,由于大小,我们将立即出现内存不足错误。我可以使用Java中的有效方法来获取 ..data..data..data.. 数据元素而无需逐行加载或读取文件。是否有任何 SAX 解析器可以用来完成这项工作?
谢谢
SAX 解析器是基于事件的并且速度更快,因为它们可以满足您的需求:它们不会完全读取 xml 文档。SAXParser
Java 发行版中有一个可用的。
我不得不在以前的项目(1G-2G)中解析大文件,并且不想使用 SAX 来处理。我发现 SAX 在某些情况下太低级,并且在大多数情况下喜欢保持遍历方法。
我使用了 VTD 库http://vtd-xml.sourceforge.net/。这是一个非常快速的库,它使用指针在文档中导航。
StAX是另一种基于流数据的选项,如 SAX,但受益于更友好的方法 (IMO),通过“拉”您想要的而不是“推”给您来处理数据。