Java 验证大型XML文件
我正试图找到一种方法来根据XSD验证大型XML文件。我看到了这个问题,但答案都指向使用Xerces库进行验证。唯一的问题是,当我使用该库验证一个180 MB的文件时,我会得到一个OutOfMemoryException 是否有其他工具、库和策略用于验证比普通XML文件更大的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
编辑: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二进制文件,请访问: