开发过程中出现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;
}
来源:https://www.cnblogs.com/bcszz/archive/2012/05/29/2523566.html