2

解析错误生成的 XML 文档时出现此错误:

org.xml.sax.SAXParseException: The value of attribute "bar" associated with an element type "foo" must not contain the '<' character.

我知道是什么导致了问题。就是这一行:

<foo bar="x<y">42</foo>

应该是

<foo bar="x&lt;y">42</foo>

我知道这不是有效的 XML,但我的代码必须在无人看管的情况下下载和解析类似的文件,并且出于政治原因,可能无法说服供应商修复有故障的程序,尤其是当其他程序正在读取文件并容忍时这个错误。

有没有办法配置 Xerces 来容忍它?目前它将其视为致命错误。实现ErrorHandler忽略它并不令人满意,因为文档的其余部分没有被解析。

或者,您能否建议另一个可以配置为容忍此错误的基于流的解析器?使用 DOM 解析器是不可行的,因为这些文档会达到数百兆字节。

4

2 回答 2

5

...并且出于政治原因,可能无法说服供应商修复有缺陷的程序...

出于政治原因,您应该尽最大努力让他们修复它。在他们面前挥动需求规范,说明输入必须是格式良好的 XML。威胁要向他们收取开发定制解析器的费用。(好吧,那可能行不通......)

By giving up without a fight, you are just leaving the problem to trouble other people who have to deal with this supplier in the future.

于 2010-07-23T04:57:14.410 回答
4

我认为您不会找到任何能够容忍此类错误的 XML 解析器。我唯一可以建议的是您对 XML 进行预处理以消除可能发生的错误。

于 2010-07-23T04:41:08.597 回答