如何在Java中解析格式错误的XML?
我有需要解析的XML,但无法控制XML的创建。不幸的是,它不是非常严格的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解析器会处理它(如您所确定的)。如果您知道错误的范围
<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.