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

时间:2009-05-28 11:15:01

标签: java xml parsing entities

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

<mytag>This won't parse & contains an ampersand.</mytag>

javax.xml.stream类根本不喜欢这个,并且正确地错误:

javax.xml.stream.XMLStreamException: ParseError at [row,col]:[149,50]
Message: The entity name must immediately follow the '&' in the entity reference.

我该如何解决这个问题?我无法更改XML,所以我想我需要一个容错的解析器。

我的偏好是针对现有解析器代码不需要太多中断的修复。

3 个答案:

答案 0 :(得分:14)

答案 1 :(得分:6)

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

否则,你必须自己编写代码,内置支持这种异常。而且我无法相信这是一项繁琐且容易出错的任务。

答案 2 :(得分:1)

我相信JSoup可以处理格式错误的XML