关于java:验证巨大的XML文件

关于java:验证巨大的XML文件

Validating a HUGE XML file

我正在尝试找到一种方法来针对XSD验证大型XML文件。 我看到了问题......验证XML的最佳方法......但答案都指向使用Xerces库进行验证。 唯一的问题是,当我使用该库来验证180 MB文件时,我得到一个OutOfMemoryException。

是否有其他工具,库,策略来验证大于普通的XML文件?

编辑:SAX解决方案适用于java验证,但libxml工具的另外两个建议对于java之外的验证非常有用。


不使用DOMParser,而是使用SAXParser。 这将从输入流或读取器读取,因此您可以将XML保留在磁盘上,而不是将其全部加载到内存中。

1
2
3
4
5
6
7
8
9
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(true);
factory.setNamespaceAware(true);

SAXParser parser = factory.newSAXParser();

XMLReader reader = parser.getXMLReader();
reader.setErrorHandler(new SimpleErrorHandler());
reader.parse(new InputSource(new FileReader ("document.xml")));

使用libxml,它执行验证并具有流模式。


我个人喜欢使用具有命令行界面的XMLStarlet,并在流上工作。 它是一组基于Libxml2构建的工具。


如前所述,SAX和libXML将有所帮助。 您还可以尝试使用-Xmx选项增加JVM的最大堆大小。 例如。 将最大堆大小设置为512MB:java -Xmx512m com.foo.MyClass


推荐阅读

    linux改文件权限命令?

    linux改文件权限命令?,系统,工具,档案,权限,文件,信息,命令,目录,选项,用户,

    linux命令联想工具?

    linux命令联想工具?,地址,工作,系统,工具,状态,标准,信息,命令,目录,左下角,L

    linux命令交换文件名?

    linux命令交换文件名?,命令,文件,数据,名称,工具,地址,软件,系统,基础知识,

    linux下替换文件命令?

    linux下替换文件命令?,文件,一致,评论,名称,标的,资料,工作,命令,字符串,内

    linux文件nl命令?

    linux文件nl命令?,地址,工作,信息,系统,情况,标准,实时,对比,百度,命令,linux

    linux寻找文件夹命令?

    linux寻找文件夹命令?,名称,命令,文件,位置,工作,标准,目录,子目录,文件名,

    linux跳到文件尾命令?

    linux跳到文件尾命令?,系统,文件,命令,管理,状态,实时,末尾,光标,内容,编辑,l

    linux把文件复制命令?

    linux把文件复制命令?,名字,文件,软件,系统,位置,目录,命令,源文件,目标,文

    linux文件夹合并命令?

    linux文件夹合并命令?,文件,对比,第一,下来,命令,文件夹,两个,字段,内容,数

    linux下文件创建命令?

    linux下文件创建命令?,名字,名称,首次,命令,文件,系统,密码,文件名,文件夹,

    linux命令行安装文件?

    linux命令行安装文件?,软件,官网,密码,中心,电脑,文件,命令,终端,指令,版本,L

    linux解压文件命令行?

    linux解压文件命令行?,系统,电脑,命令,文件,平台,名称,软件,管理,标准,目录,

    linux命令编辑文件?

    linux命令编辑文件?,系统,状态,电脑,命令,数据,标准,不了,名称,发行,网络,Lin

    linux文件乱码命令?

    linux文件乱码命令?,系统,环境,乱码,信息,状态,盘中,文件,字符集,中文,文件

    linux的删除文件命令?

    linux的删除文件命令?,名称,不了,系统,文件夹,命令,文件,环境,档案,目录,指

    linux赋值文件命令?

    linux赋值文件命令?,标准,数据,系统,状态,命令,赋值,变量,权限,文件,脚本,lin

    linux备份文件的命令?

    linux备份文件的命令?,系统,设备,网络,工具,平台,名称,备份,文件,命令,目录,l

    linux命令创建文件加?

    linux命令创建文件加?,名字,管理,系统,名称,密码,首次,命令,文件,文件夹,位

    linux文件基础命令?

    linux文件基础命令?,地址,基础,管理,命令,情况,系统,工作,标准,单位,网络,lin