xml中非法字符

今使用Jdom从数据库读取数据生成xml文件,然后再解析xml文件时,总是出现0x0,非法字符,经过搜索,问题原因及解决方法如下:

 

原因:

xml中需要过滤的字符分为两类,一类是不允许出现在xml中的字符,这些字符不在xml的定义范围之内。另一 类是xml自身要使用的字符,如果内容中有这些字符则需被替换成别的字符。

第一类字符:
对于第一类字符,我们可以通过W3C的XML文档来查看都有哪些字符不被允许出现在xml文档中。
XML允许的字符范围是“#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]”。因此我们可以把这个范围之外的字符过滤掉。
需要过滤的字符的范围为:
//x00-//x08
//x0b-//x0c
//x0e-//x1f

第二类字符:
对于第二类字符一共有5个,如下:
字符                HTML字符        字符编码
和(and) &        &            &
单引号  ’         '            '
双引号  ”          "            "
大于号  >         >                >
小于号  <         &lt;                  &#60;
我们只需要对这个五个字符,进行相应的替换就可以了

解决方法:

用正则表达式替换,str.replaceAll(,"")

用正则表达式表示如下:str.replaceAll("[<>&'/"//x00-//x08//x0b-//x0c//x0e-//x1f]", "")此表达式使用不通过。

另有表达式:【^(?:[/u4e00-/u9fa5]*/w*/s*)+$】测试不成功
str.replaceAll("[//x00-//x08//x0b-//x0c//x0e-//x1f]", "") 测试成功
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值