Java 验证和编组大型XML文件?

Java 验证和编组大型XML文件?,java,xml,marshalling,Java,Xml,Marshalling,我有一个2GB到4GB的大XML文件,我正在通过第三家pasrty供应商获得它。现在我需要做两种手术 对于不同的用途:- 用例1:- 验证XML中的某些值 用例2:- 将XML封送到java对象以进行某些处理 现在我的问题是什么是最好的方法。我可以在不解析用例1的情况下验证特定元素吗 第二个问题是如何封送如此大的文件而不出现异常,或者在用例2中最大限度地利用内存?如果文档如此大,您将需要手动使用基于事件的解析器,例如SAX和marshall对象。这将允许您将文档作为流进行处理,而不是一次读取整个

我有一个2GB到4GB的大XML文件,我正在通过第三家pasrty供应商获得它。现在我需要做两种手术 对于不同的用途:-

用例1:-

验证XML中的某些值

用例2:-

将XML封送到java对象以进行某些处理

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


第二个问题是如何封送如此大的文件而不出现异常,或者在用例2中最大限度地利用内存?

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

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


如果是一次性活动,则可以使用java通过增加堆内存来实现。不是一次性活动不要立即读取,请使用STaX API读取文件(读取文件的一小部分)。例如,您可能还希望查看SpringBatch,以帮助您读取/处理该文件。