Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 验证大型XML文件_Java_Xml_Validation_Xsd - Fatal编程技术网

Java 验证大型XML文件

Java 验证大型XML文件,java,xml,validation,xsd,Java,Xml,Validation,Xsd,我正试图找到一种方法来根据XSD验证大型XML文件。我看到了这个问题,但答案都指向使用Xerces库进行验证。唯一的问题是,当我使用该库验证一个180 MB的文件时,我会得到一个OutOfMemoryException 是否有其他工具、库和策略用于验证比普通XML文件更大的XML文件 编辑:SAX解决方案适用于java验证,但是关于libxml工具的另外两个建议对于java之外的验证也非常有用。使用SAXParser而不是使用DOMParser。这将从输入流或读取器读取XML,这样您就可以将XM

我正试图找到一种方法来根据XSD验证大型XML文件。我看到了这个问题,但答案都指向使用Xerces库进行验证。唯一的问题是,当我使用该库验证一个180 MB的文件时,我会得到一个OutOfMemoryException

是否有其他工具、库和策略用于验证比普通XML文件更大的XML文件


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

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

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")));

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

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

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

,您可以使用一个易于使用的Windows工具,该工具在内部使用Xerces SAX解析器来验证大型文件。@oob是的,libxml2工作得很好。此外,如果有人正在查找Windows二进制文件,请访问: