fin*_*nnw 2 java xml sax xerces
我在解析生成错误的XML文档时遇到此错误:
org.xml.sax.SAXParseException: The value of attribute "bar" associated with an element type "foo" must not contain the '<' character.
Run Code Online (Sandbox Code Playgroud)
我知道造成这个问题的原因.就是这条线:
<foo bar="x<y">42</foo>
Run Code Online (Sandbox Code Playgroud)
它应该是
<foo bar="x<y">42</foo>
Run Code Online (Sandbox Code Playgroud)
我知道这不是有效的XML,但是我的代码必须无人值守地下载和解析类似的文件,并且由于政治原因,可能无法说服供应商修复错误的程序,特别是当其他程序正在读取文件并且容忍时这个错误.
有没有办法配置Xerces容忍它?目前它将其视为致命错误.实现一个ErrorHandler忽略它并不令人满意,因为那时文档的其余部分不会被解析.
或者,您可以建议另一个基于流的解析器,可以配置为容忍此错误吗?使用DOM解析器是不可行的,因为这些文档可能会达到数百兆字节.
......出于政治原因,可能无法说服供应商修复错误的程序......
出于政治原因,你应该尽力让他们去修理它.在他们面前挥动需求规范,说明输入必须是格式良好的XML.威胁要为开发定制解析器而付出代价.(好吧,这可能不会起作用......)
通过放弃而不打架,您只是将问题留给了将来必须与该供应商打交道的其他人.