XML 非法字符
来源:互联网 发布:cn的域名 编辑:程序博客网 时间:2024/05/01 07:48
在写入或读取XML 文件时,需要注意对非法字符的过滤 //x00-//x08 所以,需要对在这3个范围段的字符进行排除 可利用.NET中 Regex的 Replace 方法对字符串中在这3个范围段的字符进行替换,如: string content = "as fas fasfadfasdfasdf<234234546456"; content = Regex.Replace(content, "[//x00-//x08//x0b-//x0c//x0e-//x1f]", "*"); Response.Write(content); 这样就OK了,如果你还不放心,可以对 <,>,&,'," 这5个符号进行一下特殊处理,即: Java处理代码
根据W3C的标准,以下16进制的字符是不被允许出现在XML文件中的,即使放在<![CDATE[]]> 中,也不能幸免遇难
//x0b-//x0c
//x0e-//x1f
< <
> >
& &
' '
" "
/**
* 使用d替代非法字符.
* @param text
* @param d
* @return
*/
public static String replaceInvaldateCharacter(String text, char d) {
if (text != null) {
char[] data = text.toCharArray();
for (int i = 0; i < data.length; i++) {
if(!isXMLCharacter(data[i]))
data[i] = d;
}
return new String(data);
}
return "";
}
/**
* 使用空格替代非法字符.
* @param text
* @return
*/
public static String replaceInvaldateCharacter(String text) {
return replaceInvaldateCharacter(text, (char)0x20);
}
/**
* 检查字符是否为合法的xml字符
* XML规范中规定了允许的字符范围(http://www.w3.org/TR/REC-xml#dt-character):
* Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
* @param c
* @return
*/
private static boolean isXMLCharacter(int c) {
if (c <= 0xD7FF) {
if (c >= 0x20)
return true;
else
return c == '/n' || c == '/r' || c == '/t';
}
return (c>=0xE000 && c<= 0xFFFD) || (c>=0x10000 && c<= 0x10FFFF);
}
经过非法字符的替换处理后,包含非法XML字符的邮件可以正常阅读。
综上所述,对于wml出现的内容,需要做以下处理:
1、替换非法的XML字符
2、对于可能出现’<’,’/’,’&’,’>’等字符的内容需要进行转义字符替换,或者使用CDATA包起来
- XML 非法字符
- xml中非法字符
- 过滤xml非法字符
- 过滤xml非法字符
- XML里的非法字符
- 删除xml中的非法字符
- xml中的非法字符处理
- 当心XML文件中的非法字符
- 关于-非法的xml字符
- 剔除XML文件中的非法字符
- 关于 Exception:Xml中的非法字符
- XML解析非法字符:65279错误
- XML中的非法字符及过滤方法
- xml中的非法字符 以及 处理
- MindManager报“xml字符非法”的解决办法
- 替换xml中的非法字符及不可见字符
- SSAS维度成员中的非法XML字符[转]
- XML中是不能包含这些非法字符的
- 通过接口引用对象
- 通过接口引用对象
- 通过接口引用对象
- DOM与SAX解析xml的区别
- 使用反射机制
- XML 非法字符
- CSharp static constructors
- StretchBlt函数用法。
- Jquery ajax 初探
- SB的反思!
- java jdbc 事务管理
- 用GDB调试程序(一)
- ORA-16014
- 约瑟夫问题的非链表解法