문제

XSD에 대해 대용량 XML 파일의 유효성을 검사하는 방법을 찾으려고 합니다.질문을 봤어요 ...XML의 유효성을 검사하는 가장 좋은 방법... 그러나 대답은 모두 검증을 위해 Xerces 라이브러리를 사용하는 것을 가리켰습니다.유일한 문제는 해당 라이브러리를 사용하여 180MB 파일의 유효성을 검사할 때 OutOfMemoryException이 발생한다는 것입니다.

일반 XML 파일보다 큰 유효성을 검사하기 위한 다른 도구, 라이브러리, 전략이 있습니까?

편집하다:SAX 솔루션은 Java 유효성 검사에 효과적이었지만 libxml 도구에 대한 다른 두 가지 제안은 Java 외부 유효성 검사에도 매우 유용했습니다.

도움이 되었습니까?

해결책

DOMParser를 사용하는 대신 SAXParser를 사용하십시오.이는 입력 스트림이나 판독기에서 읽으므로 모든 XML을 메모리에 로드하는 대신 디스크에 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, 유효성 검사를 수행합니다. 그리고 스트리밍 모드가 있습니다.

개인적으로 즐겨 사용하는 XML별표 명령줄 인터페이스가 있고 스트림에서 작동합니다.Libxml2를 기반으로 구축된 도구 세트입니다.

이미 언급한 것처럼 SAX와 libXML이 도움이 될 것입니다.-Xmx 옵션을 사용하여 JVM의 최대 힙 크기를 늘릴 수도 있습니다.예:최대 힙 크기를 512MB로 설정하려면: java -Xmx512m com.foo.MyClass

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top