Xml与对象之间的序列化、反序列化
可读性高的Xml呢,这也是有办法的。具体的方法则是DataTable与Xml互转,该方法是从互联网摘录的。
/// <summary> /// 将DataTable对象转换成XML字符串 /// </summary> /// <param name="dt">DataTable对象</param> /// <returns>XML字符串</returns> public static string DataToXml(DataTable dt) { if (dt != null) { MemoryStream ms = null; XmlTextWriter XmlWt = null; try { ms = new MemoryStream(); //根据ms实例化XmlWt XmlWt = new XmlTextWriter(ms, Encoding.Unicode); //获取ds中的数据 dt.WriteXml(XmlWt); int count = (int)ms.Length; byte[] temp = new byte[count]; ms.Seek(0, SeekOrigin.Begin); ms.Read(temp, 0, count); //返回Unicode编码的文本 UnicodeEncoding ucode = new UnicodeEncoding(); return ucode.GetString(temp).Trim(); } catch (Exception ex) { throw ex; } finally { //释放资源 if (XmlWt != null) { ms.Close(); ms.Dispose(); } } } else { return string.Empty; } } /// <summary> /// 将Xml内容字符串转换成DataTable对象 /// </summary> /// <param name="xmlStr">Xml内容字符串</param> /// <returns>DataTable对象</returns> public static DataTable XmlToDataTable(string xmlStr) { if (!string.IsNullOrEmpty(xmlStr)) { StringReader StrStream = null; XmlTextReader Xmlrdr = null; try { DataSet ds = new DataSet(); //读取字符串中的信息 StrStream = new StringReader(xmlStr); //获取StrStream中的数据 Xmlrdr = new XmlTextReader(StrStream); //ds获取Xmlrdr中的数据 ds.ReadXml(Xmlrdr); return ds.Tables[0]; } catch (Exception ex) { throw ex; } finally { //释放资源 if (Xmlrdr != null) { Xmlrdr.Close(); StrStream.Close(); StrStream.Dispose(); } } } else { return null; } }
再来看看序列化后的结果吧:
这样看起来,是不是清晰了很多。
分类: C#