如何解析Java中严重形成的XML?

问题描述:

我有XML,我需要解析但无法控制的创建。可惜这不是很严格的XML,并包含喜欢的东西:如何解析Java中严重形成的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,所以我想我需要一个容错解析器。

我的首选是修复,不需要太多的破坏现有的解析器代码。

如果它不是有效的XML(像上面的),则没有XML解析器将处理它(因为你已经确定)。如果你知道错误的范围(比如上面的实体问题),那么最简单的解决方案可能是对它进行修正(修复诸如插入实体之类的实体),然后将其馈送到现有解析器。

否则,您必须自己编写一个内置的支持这种异常。我简直无法相信这只是一个单调乏味且容易出错的任务。

+0

+1对于自己编码。大多数时候这可能是一个坏主意,但在非常简单的情况下,这是值得考虑的。 – xdhmoore 2014-10-16 14:27:51

我相信JSoup可以处理格式不对的XML