Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SAXParseException XML文档结构必须在同一实体中开始和结束_Java_Xml_Saxparser_Validating - Fatal编程技术网

Java SAXParseException XML文档结构必须在同一实体中开始和结束

Java SAXParseException XML文档结构必须在同一实体中开始和结束,java,xml,saxparser,validating,Java,Xml,Saxparser,Validating,所以我知道使用这个API,我在服务器上生成的一些xml文件可能生成错误,或者没有关闭一些标记,或者结构不好。 现在我的代码运行良好,但对于某些文件,其中一些xml文件会抛出这些错误,下面是错误块 org.xml.sax.SAXParseException; systemId: file:///E:/ARCHIVED_LOGS/BACKUP_LOG_190317_0000/trace_file.xml; lineNumber: 201; columnNumber: 105; XML documen

所以我知道使用这个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语言提供任何类型的规范。

您不能使用一致性XML解析器来处理不一致(非)XML文档


您可以使用不符合要求的解析器(例如HTML解析器),它可能提供SAX解析器API,但您是否能找到一个能够接受向您抛出的非XML的特定风格的解析器是一个开放的问题,因为您尚未为这种非XML语言提供任何类型的规范。

谢谢您的回复,我遇到的XML问题是,它们是从一个以XML形式编写日志的实时服务器生成的;因此,这些文件是在写入过程中获取的,或者在下载(复制)这些文件时重新启动。结果,他们中的一些人以不正确的标签关闭而告终。我正在考虑添加另一种处理方法(逐行读取),以防出现写入同一HashMap的异常感谢您的回复,我遇到的XML问题是,它们是从以XML形式编写日志的实时服务器生成的;因此,这些文件是在写入过程中获取的,或者在下载(复制)这些文件时重新启动。结果,他们中的一些人以不正确的标签关闭而告终。我正在考虑添加另一种处理方法(逐行读取),以防出现写入同一HashMap的异常