java - 配置 Xerces SAX 解析器以容忍 XML 语法错误

标签 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.

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

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

应该是

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

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

有什么方法可以配置 Xerces 来容忍它吗?目前它将其视为 fatal error 。实现 ErrorHandler 来忽略它并不令人满意,因为这样文档的其余部分就不会被解析。

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

最佳答案

... and for political reasons it might not be possible to persuade the supplier to fix the faulty program ...

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

不战而屈人之兵,只是把问题留给以后要与该供应商打交道的其他人。

关于java - 配置 Xerces SAX 解析器以容忍 XML 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3315345/

相关文章:

java - 即使正确也不下载依赖项

java - 后台发彩信不显示任何界面

xml - 更改 text(),同时使用 XSLT 保留元素的子元素

c++ - 哪个是最高效的 C++ XML 解析器?

java - 用 sax 跳过节点

java - 关于Java 8OptionalInt.of参数的问题

java - 如何增加变量的值

android - 应用程序的 UI 在 220 dpi 屏幕上不合适

java - SAX 解析器和字符串驻留

java - 您将如何使用 Java 来处理各种 XML 文档?