이 API를 사용하면 서버에서 생성 된 일부 XML 파일이 잘못 생성되거나 일부 태그를 닫지 않거나 잘못 구성된 것일 수 있습니다. 지금 내 코드는 잘 작동하지만, 특정 파일이 XML 파일 중 일부는 이러한 오류가 발생, 오류가 아래의 블록이SAXParseException XML 문서 구조가 동일한 엔터티 내에서 시작되고 끝나야합니다.
org.xml.sax.SAXParseException; systemId: file:///E:/ARCHIVED_LOGS/BACKUP_LOG_190317_0000/trace_file.xml; lineNumber: 201; columnNumber: 105; XML document structures must start and end within the same entity.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.endEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.endEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.endEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.peekChar(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
그래서 사용하여에이 문제를 해결하지 않고 이러한 파일을 처리하는 방법은 무엇입니까 SAX 파서 API?
나는 그 파일을 한 줄씩 처리하려고 생각했지만 고통 스럽다. 아래와 같이
또한 건너 뛰는 DTD 검증 유사한 방법은 비 비 준수 (
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(false);
factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
SAXParser saxParser = factory.newSAXParser();
이
이
답장을 보내 주셔서 감사합니다. XML의 문제는 XML 형식의 로그를 작성하는 라이브 서버에서 생성된다는 것입니다. 따라서, 이들 파일은 기록 프로세스 중에 취해 지거나 이들 파일을 다운로드 (복사)하는 동안 재시작이 일어났다. 그 결과 일부는 부적절한 태그 종료로 끝났습니다. 동일한 HashMap에 쓰는 예외의 경우 다른 처리 방법 (줄 단위로 읽음)을 추가하려고 생각했습니다. –