概述
在XML规范中,不支持ASCII前31个字符中的相当多控制符号,所以在组装XML时需过滤这些特殊字符,以免引起解析问题。对于这些特殊字符,常见的异常如:
引用
Character reference "" is an invalid XML character.
这里的"表示是ASCII码的第几个控制字符
同时,'&'(实体引用的开始)和''的话,还是会出现解析问题。
正常CDATA段示例
引用
CDStart ::= '
CData ::= (Char* - (Char* ']]>' Char*))
CDEnd ::= ']]>'
用类似的代码解决这类烦人问题
/**
* @see http://www.w3.org/TR/2004/REC-xml-20040204/#charsets
* All supported characters
* @param data
* content in each field
* @return
* regular content is filtered from illegal XML char
*/
public static String checkXmlChar(String data) {
StringBuffer appender = new StringBuffer("");
if (StringUtils.isNotBlank(data)) {
appender = new StringBuffer(data.length());
for (int i = 0; i < data.length(); i++) {
char ch = data.charAt(i);
if ((ch == 0x9) || (ch == 0xA) || (ch == 0xD)
|| ((ch >= 0x20) && (ch <= 0xD7FF))
|| ((ch >= 0xE000) && (ch <= 0xFFFD))
|| ((ch >= 0x10000) && (ch <= 0x10FFFF)))
appender.append(ch);
}
}
String result = appender.toString();
return result.replaceAll("]]>", "");
}
3
顶
0
踩
分享到:
2010-08-27 17:43
浏览 16429
评论
最后
以上就是闪闪天空为你收集整理的xml特殊字符 java_XML中特殊字符过滤(含Java代码)的全部内容,希望文章能够帮你解决xml特殊字符 java_XML中特殊字符过滤(含Java代码)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复