Xml与对象之间的序列化、反序列化
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#
作者: Leo_wl
出处: http://HdhCmsTestcnblogs测试数据/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息查看更多关于Xml与对象之间的序列化、反序列化的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did46107