2017-04-02 61 views
1

이 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(); 

답변

0

당신은 처리하는 데 따르는 XML 파서를 사용할 수 없습니다 당신을 :) 감사가) XML 문서.

비 호환 구문 분석기 (예 : HTML 구문 분석기)를 사용할 수 있으며 SAX 구문 분석기 API를 제공 할 수 있지만 사용자에게 전송되는 비 XML의 특정 특성을 허용하는 구문 분석기를 찾을 수 있는지 여부 이 비 XML 언어에 대한 사양을 우리에게주지 않았기 때문에 공개 질문입니다.

+0

답장을 보내 주셔서 감사합니다. XML의 문제는 XML 형식의 로그를 작성하는 라이브 서버에서 생성된다는 것입니다. 따라서, 이들 파일은 기록 프로세스 중에 취해 지거나 이들 파일을 다운로드 (복사)하는 동안 재시작이 일어났다. 그 결과 일부는 부적절한 태그 종료로 끝났습니다. 동일한 HashMap에 쓰는 예외의 경우 다른 처리 방법 (줄 단위로 읽음)을 추가하려고 생각했습니다. –