5

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

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

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

在此处输入图像描述

请问有人可以给我一个解决方案吗?

提前致谢。

4

3 回答 3

8

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

简而言之,您要解析的不是 XML。

于 2013-01-07T08:22:06.670 回答
4

每当无效的 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 中输入无效的特殊字符

于 2014-12-31T10:29:21.307 回答
3

根据XML W3C 建议0xb 不允许在 XML 文件中:

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

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

于 2013-01-07T08:21:13.983 回答