2017-04-02 30 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?

私はこれらのファイルを1行ずつ処理することを考えていましたが、それは苦痛です。

またありがとう:)

答えて

0

をあなたは非(不適合を処理するために準拠したXMLパーサーを使用することはできません

SAXParserFactory factory = SAXParserFactory.newInstance(); 

    factory.setValidating(false);     
    factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); 
    SAXParser saxParser = factory.newSAXParser(); 

の下に見られるように、DTD検証をスキップに似た方法があります)XML文書。

非適合パーサー(たとえばHTMLパーサー)を使用して、SAXパーサーAPIを提供しても構いませんが、非XMLの特定のフレーバーを受け入れるパーサーを見つけることができるかどうかあなたが私たちにこの非XML言語のためのどんな種類の指定も与えていないので、オープンな質問です。

+0

ご回答いただきありがとうございます。私が持っているXMLの問題は、ログがXML形式でログに書き込まれているライブサーバーから生成されていることです。したがって、これらのファイルは書き込みプロセス中に取られているか、またはこれらのファイルをダウンロード(コピー)中に再開されたことになる。その結果、それらのうちのいくつかは不適切なタグ閉鎖で終わった。 同じHashMapに書き込む例外の場合に別の処理メソッドを追加することを考えていました。 –

関連する問題