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

use*_*124 3 java xml unicode parsing

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

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

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

在此输入图像描述

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

提前致谢.

dty*_*dty 7

0xB(垂直制​​表符)不是XML中的有效字符.ASCII 32(0x20,空格)之前唯一有效的字符是0x9(制表符),0xA(回车符)和0xD(换行符).

简而言之,您要解析的内容不是XML.


Kom*_*mal 5

每当无效的 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("");
Run Code Online (Sandbox Code Playgroud)

它将确保 xml 中不会输入无效的特殊字符


Hen*_*nry 3

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

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

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