開發過程中出現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; }
