验证HUGE XML文件

Dan*_*mer 28 java xml validation xsd

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

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

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

jod*_*ell 30

不使用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")));
Run Code Online (Sandbox Code Playgroud)

  • 您尚未在此处提供 XSD 进行验证。如何做到这一点? (2认同)

Joh*_*kin 8

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