簡體   English   中英

SAXParseException XML文檔結構必須在同一實體中開始和結束

[英]SAXParseException XML document structures must start and end within the same entity

所以我知道使用這個API,我在服務器上生成的一些xml文件可能會生成錯誤或者沒有關閉某些標簽,或者結構不合理。 現在我的代碼工作正常,但對於某些文件,這些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文檔。

您可以使用不合格的解析器 - 例如HTML解析器 - 並且它可能提供SAX解析器API - 但是您是否可以找到一個解析器,它接受向您拋出的非XML的特定風格,這是一個懸而未決的問題因為你還沒有給我們任何這種非XML語言的規范。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM