如何告诉Java SAX Parser忽略无效的字符引用?

Epa*_*aga 18 java xml error-handling sax

当尝试使用字符引用解析不正确的XML时,例如&#x1,Java的SAX Parser因致命错误而死亡,例如

    org.xml.sax.SAXParseException: Character reference "&#x1"
                                   is an invalid XML character.
Run Code Online (Sandbox Code Playgroud)

有没有办法解决?在将其交给SAX Parser之前,我是否必须清理XML文件?如果是这样,有没有一种优雅的方式来解决这个问题?

wow*_*est 24

使用XML 1.1!skaffman是完全正确的,但你可以坚持<?xml version="1.1"?>你的文件的顶部,你将处于良好的状态.如果您正在处理流,请编写一个重写或添加该处理指令的包装器.


ska*_*man 7

我担心,你将不得不清理你的XML.根据XML规范,这些字符是无效的,否则说服者不会说服解析器.

XML 1.0的有效XML字符:

  • U+0009
  • U+000A
  • U+000D
  • U+0020 - U+D7FF
  • U+E000 - U+FFFD
  • U+10000 - U+10FFFF

为了清理,您必须通过更低级别的处理器传递数据,该处理器将其视为unicode字符流,删除那些无效的字符.