Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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中解析格式错误的XML?_Java_Xml_Parsing_Entities - Fatal编程技术网

如何在Java中解析格式错误的XML?

如何在Java中解析格式错误的XML?,java,xml,parsing,entities,Java,Xml,Parsing,Entities,我有需要解析的XML,但无法控制XML的创建。不幸的是,它不是非常严格的XML,包含以下内容: <mytag>This won't parse & contains an ampersand.</mytag> 我怎样才能解决这个问题?我无法更改XML,因此我想我需要一个容错解析器 我更喜欢不需要太多中断现有解析器代码的修复程序。使用库,如tidy或tagsoup 如果它不是有效的XML(如上所述),则没有XML解析器会处理它(如您所确定的)。如果您知道错误的范围

我有需要解析的XML,但无法控制XML的创建。不幸的是,它不是非常严格的XML,包含以下内容:

<mytag>This won't parse & contains an ampersand.</mytag>
我怎样才能解决这个问题?我无法更改XML,因此我想我需要一个容错解析器


我更喜欢不需要太多中断现有解析器代码的修复程序。

使用库,如
tidy
tagsoup

如果它不是有效的XML(如上所述),则没有XML解析器会处理它(如您所确定的)。如果您知道错误的范围(例如上面的实体问题),那么最简单的解决方案可能是对其运行一个更正过程(修复实体,例如插入实体),然后将其提供给现有的解析器


否则,您将不得不自己编写一个代码,内置对此类异常的支持。我不相信这是一项乏味且容易出错的任务。

我相信JSoup可以处理格式错误的XML,自己编写一个。大多数情况下,这可能是个坏主意,但在非常简单的情况下,它值得考虑。
javax.xml.stream.XMLStreamException: ParseError at [row,col]:[149,50]
Message: The entity name must immediately follow the '&' in the entity reference.