[英]Validating a HUGE XML file
我正在嘗試找到一種方法來針對XSD驗證大型XML文件。 我看到了問題......驗證XML的最佳方法......但答案都指向使用Xerces庫進行驗證。 唯一的問題是,當我使用該庫來驗證180 MB文件時,我得到一個OutOfMemoryException。
是否有其他工具,庫,策略來驗證大於普通的XML文件?
編輯:SAX解決方案適用於java驗證,但libxml工具的另外兩個建議對於java之外的驗證非常有用。
不使用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 ,它執行驗證並具有流模式。
我個人喜歡使用具有命令行界面的XMLStarlet ,並在流上工作。 它是一組基於Libxml2構建的工具。
如前所述,SAX和libXML將有所幫助。 您還可以嘗試使用-Xmx選項增加JVM的最大堆大小。 例如,將最大堆大小設置為512MB: java -Xmx512m com.foo.MyClass
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.