题
我正在尝试找到一种方法来根据 XSD 验证大型 XML 文件。我看到了问题 ...验证 XML 的最佳方法... 但答案都指向使用 Xerces 库进行验证。唯一的问题是,当我使用该库验证 180 MB 文件时,我收到 OutOfMemoryException。
是否有其他工具、库、策略来验证比普通 XML 文件更大的文件?
编辑:SAX 解决方案适用于 java 验证,但 libxml 工具的其他两个建议对于 java 之外的验证也非常有帮助。
解决方案
使用 SAXParser,而不是使用 DOMParser。它从输入流或读取器中读取,以便您可以将 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")));
不隶属于 StackOverflow