簡體   English   中英

驗證HUGE XML文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM