XML解析出现An invalid XML character (Unicode: 0x**) was found in the comment.

在生产环境上,第三方通讯传输内容有XML不允许的特殊字符,我暂且叫它乱码。

这些乱码导致XML解析报错An invalid XML character (Unicode: 0x**) was found in the comment. 或者其他相同的意思。

解决办法有2个:
1是叫第三方通讯传输内容控制乱码,比如0x1c等等
2是自己在解析xml之前,对内容进行乱码过滤

第2个办法,在网上搜到一个解决方案,我觉得有效,但还没有尝试,毕竟要先尝试第1种情况,与第三方叙述问题。

这些错误的发生是由于一些不可见的特殊字符的存在,而这些字符对于XMl文件来说又是非法的,所以XML解析器在解析时会发生异常,官方定义了XML的无效字符分为三段: 
0x00 - 0x08
0x0b - 0x0c
0x0e - 0x1f

解决方法是:在解析之前先把字符串中的这些非法字符过滤掉:
string.replaceAll("[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f]", "")

办法2转载:http://sjsky.iteye.com/blog/1055063

顺便还搜到一些W3C的测试报告文档,没看懂。转载下应该有点用
http://dev.w3.org/XInclude-Test-Suite/xml-test-suite/xerces-val-report.html

http://dev.w3.org/XInclude-Test-Suite/xml-test-suite/xerces-val-report.html

http://www.w3.org/XML/Test/xmlconf-20080827.html

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值