解析生成错误的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<y">42</foo>
我知道这不是有效的XML,但是我的代码必须无人值守地下载和解析类似的文件,并且由于政治原因,可能无法说服供应商修复错误的程序,尤其是当其他程序正在阅读时文件并容忍此错误。
有没有办法配置Xerces来容忍它?目前它将其视为致命错误。实现ErrorHandler
以忽略它是不能令人满意的,因为那时文档的其余部分不会被解析。
或者,您可以建议另一个基于流的解析器,可以配置为容忍此错误吗?使用DOM解析器是不可行的,因为这些文档可能会达到数百兆字节。
答案 0 :(得分:5)
......出于政治原因,可能无法说服供应商修复错误的程序......
出于政治原因,你应该尝试你最痛苦的让他们解决它。在他们面前挥动需求规范,说明输入必须是格式良好的XML。威胁要为开发定制解析器而付出代价。 (好吧,这可能不会起作用......)
在没有战斗的情况下放弃,你只是将这个问题留给了将来必须与这个供应商打交道的其他人。
答案 1 :(得分:4)
我认为您不会发现任何可以容忍此类错误的XML解析器。我唯一可以建议你预处理XML以消除可能发生的错误。