zoukankan      html  css  js  c++  java
  • 读取XML数据出错 (十六进制值 0x00)是无效的字符 的解决办法

    开发过程中出现XML 文件读入XElement 对象时出错,找了个解决办法,如下:

    --------------------------------------

    Ron

    原地址:http://www.cnblogs.com/luolongda/archive/2010/11/05/1870064.html

     

    提示错误,错误信息如下: 十六进制值 0x0B 是无效的字符错误

    产生原因是xml文件中包含低位非打印字符造成的

    处理方法:在产生xml文件的时候,过滤低位非打印字符

     

     private 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);
                    else info.Append(cc);
                }
                return info.ToString();
            }

    发现该文章浏览次数稍多,为了不误导大众,换个方法解决该问题,以下是我写的一个测试框架里的代码以作示例:

      /// <summary>
            /// 将XML反序列化为对象
            /// </summary>
            /// <typeparam name="T">实现IExtensibleDataObject接口对象 </typeparam>
            /// <param name="objStr">字符器</param>
            /// <returns></returns>
            public T Deserialize<T>(string objStr)
            where T : IExtensibleDataObject
            {
                if (string.IsNullOrWhiteSpace(objStr))
                {
                    return default(T);
                }
                
                DataContractSerializer objSerializer = new DataContractSerializer(typeof(T));
                T result = default(T);
                using (TextReader reader = new StringReader(objStr))
                {
                    XmlTextReader xreader = new XmlTextReader(reader);
                    result = (T)objSerializer.ReadObject(xreader);
                }
                return result;
            }




  • 相关阅读:
    20201120-1 每周例行报告
    20201112-1 每周例行报告
    20201105-1 每周例行报告
    20201029-1 每周例行报告
    20201022-1 每周例行报告
    20201015-3 每周例行报告
    20201008-1 每周例行报告
    20200924-1 每周例行报告
    使用代理服务器的方式在一个端口上运行多个服务
    只出现一次的数字
  • 原文地址:https://www.cnblogs.com/bcszz/p/2523566.html
Copyright © 2011-2022 走看看