验证一个巨大的 XML 文件

2022-09-01 11:55:51

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

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

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


答案 1

不要使用 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")));

答案 2

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


推荐