产生原因是xml文件中包含低位非打印字符造成的
处理方法:在产生xml文件的时候,过滤低位非打印字符
把一个字符串中的低序位ASCII字符替换成 {0:x}字符 转换ASCII0-8 转换ASCII11-12 转换ASCII14-31
/// <summary> /// 把一个字符串中的 低序位 ASCII 字符 替换成{0:X} 字符 /// 转换 ASCII 0 - 8 -> /// 转换 ASCII 11 - 12 -> - /// 转换 ASCII 14 - 31 -> - /// </summary> /// <param name="tmp"></param> /// <returns></returns> 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("{0:X}",ss); else info.Append(cc); } return info.ToString(); }
本人亲测,上面代码可用
另xml序列化的时候,允许使用CDATA,原因未知 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|