xml序列化,异常:(十六进制值 0x1D)是无效的字符

产生原因是xml文件中包含低位非打印字符造成的
处理方法:在产生xml文件的时候,过滤低位非打印字符

把一个字符串中的 低序位 ASCII 字符 替换成 {0:x}字符
转换  ASCII  0 - 8 
转换  ASCII 11 - 12
转换  ASCII 14 - 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,原因未知

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值