我是靠谱客的博主 闪闪天空,最近开发中收集的这篇文章主要介绍xml特殊字符 java_XML中特殊字符过滤(含Java代码),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在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

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2010-08-27 17:43

浏览 16429

评论

最后

以上就是闪闪天空为你收集整理的xml特殊字符 java_XML中特殊字符过滤(含Java代码)的全部内容,希望文章能够帮你解决xml特殊字符 java_XML中特殊字符过滤(含Java代码)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部