문제
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")));
제휴하지 않습니다 StackOverflow