validationHUGE XML文件
我正在尝试找到一种方法来针对XSDvalidation大型XML文件。 我看到了这个问题……validationXML的最佳方法……但答案都指向使用Xerces库进行validation。 唯一的问题是,当我使用该库来validation180 MB文件时,我得到一个OutOfMemoryException。
是否有其他工具,库,策略来validation大于普通的XML文件?
编辑:SAX解决方案适用于javavalidation,但libxml工具的另外两个建议对于java之外的validation也非常有用。
不使用DOMParser,而是使用SAXParser。 这将从输入流或读取器读取,以便您可以将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")));
使用libxml ,它执行validation并具有流模式。
我个人喜欢使用具有命令行界面的XMLStarlet ,并在流上工作。 它是一组基于Libxml2构建的工具。
如前所述,SAX和libXML将有所帮助。 您还可以尝试使用-Xmx选项增加JVM的最大堆大小。 例如,将最大堆大小设置为512MB: java -Xmx512m com.foo.MyClass