使用Stax解析XML文件时出现Unicode(0xb)错误

时间:2013-01-07 08:16:48

标签: java xml parsing unicode

解析XML文件时,Stax会产生错误:

  

Unicode(0xb)错误 - 在文档的元素内容中找到了无效的XML字符(Unicode:0xb)。

只需点击下面的链接,其中xml行的特殊字符为“VI”。它不是一个字母字符:当你尝试将它复制并粘贴到记事本中时,你会将它作为一些符号。我尝试使用Stax解析它。它显示出上述错误。

enter image description here

请有人能给我一个解决方案吗?

提前致谢。

2 个答案:

答案 0 :(得分:3)

根据XML W3C Recommendation,XML文件中不允许使用0xb:

  

角色范围   [2] Char :: =#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] / *任何Unicode字符,不包括代理块,FFFE和FFFF。 * /

严格来说,您的输入文件不是XML文件。

答案 1 :(得分:3)

每当无效的xml字符出现xml时,就会出现这样的错误。当你在记事本++中打开它时,它看起来像VT,SOH,FF这些都是无效的xml字符。我使用的是xml版本1.0,我在通过模式

在数据库中输入之前验证了文本数据
Pattern p = Pattern.compile("[^\u0009\u000A\u000D\u0020-\uD7FF\uE000-\uFFFD\u10000-\u10FFF]+");
retunContent = p.matcher(retunContent).replaceAll("");

它将确保在xml

中不会输入无效的特殊字符