以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML基础 』  (http://bbs.xml.org.cn/list.asp?boardid=1)
----  XML十六进制无效字符的处理  (http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=69158)


--  作者:pumaboyd
--  发布时间:11/5/2008 11:18:00 PM

--  XML十六进制无效字符的处理
在对生成的XML文件进行XSD验证时。提示“XML 十六进制值是无效的字符”。请看如下截图,如果出现这样的文字(比如ASCii打印字符等不可见字符)
按此在新窗口浏览图片
而且这种字符即时使用CDATD也还是报错的,所以必须使用替换的方式来实现,收集的网上代码,不做具体的研究,如果你也碰到了。请Copy吧:


public static string ReplaceLowOrderASCIICharacters(string tmp)
{
StringBuilder info = new StringBuilder();
foreach (char cc in tmp)
{
int ss = (int)cc;
if (((ss >= 0) && (ss <= 8)) || ((ss >= 11) && (ss <= 12)) || ((ss >= 14) && (ss <= 32)))
info.AppendFormat(" ", ss);//{0:X};
else info.Append(cc);
}
return info.ToString();
}

效率是有问题的,但因为我只是完成生成XML数据,所以如果您使用请注意实际生产环境。


--  作者:hexun831012
--  发布时间:11/6/2008 3:51:00 PM

--  
常识问题,XML接受Base64和Hex的十六进制编码,甚至Hex都不推荐,至于怎么生成Base64,不需要我说了吧
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
1,106.445ms