欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實現(xiàn)Xml序列化與反序列化的方法

 更新時間:2014年12月19日 11:58:48   投稿:shichen2014  
這篇文章主要介紹了C#實現(xiàn)Xml序列化與反序列化的方法,將序列化與反序列化的方法封裝入一個類文件中,包含了較為詳盡的注釋說明,非常具有實用價值,需要的朋友可以參考下

本文實例講述了C#實現(xiàn)Xml序列化與反序列化的方法。分享給大家供大家參考。具體實現(xiàn)方法如下:

復(fù)制代碼 代碼如下:
/// <summary>
/// Xml序列化與反序列化
/// </summary>
public class XmlUtil
{
public static string GetRoot(string xml)
{
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(xml.Replace("\r\n", "").Replace("\0", "").Trim());
    var e = doc.DocumentElement;
    return e.InnerText;
}

#region 反序列化
/// <summary>
/// 反序列化
/// </summary>
/// <param name="xml">XML字符串</param>
/// <returns></returns>
public static T Deserialize<T>(string xml)
{
    return (T)Deserialize(typeof(T), xml);
}
/// <summary>
/// 反序列化
/// </summary>
/// <param name="stream">字節(jié)流</param>
/// <returns></returns>
public static T Deserialize<T>(Stream stream)
{
    return (T)Deserialize(typeof(T), stream);
}
/// <summary>
/// 反序列化
/// </summary>
/// <param name="type">類型</param>
/// <param name="xml">XML字符串</param>
/// <returns></returns>
public static object Deserialize(Type type, string xml)
{
    try
    {
 xml = xml.Replace("\r\n", "").Replace("\0", "").Trim();
 using (StringReader sr = new StringReader(xml))
 {
     XmlSerializer xmldes = new XmlSerializer(type);
     return xmldes.Deserialize(sr);
 }
    }
    catch (Exception e)
    {
 return null;
    }
}
/// <summary>
/// 反序列化
/// </summary>
/// <param name="type"></param>
/// <param name="xml"></param>
/// <returns></returns>
public static object Deserialize(Type type, Stream stream)
{
    XmlSerializer xmldes = new XmlSerializer(type);
    return xmldes.Deserialize(stream);
}
#endregion
#region 序列化
/// <summary>
/// 序列化
/// </summary>
/// <param name="obj">對象</param>
/// <returns></returns>
public static string Serializer<T>(T obj)
{
    return Serializer(typeof(T), obj);
}
/// <summary>
/// 序列化
/// </summary>
/// <param name="type">類型</param>
/// <param name="obj">對象</param>
/// <returns></returns>
public static string Serializer(Type type, object obj)
{
    MemoryStream Stream = new MemoryStream();
    XmlSerializerNamespaces _name = new XmlSerializerNamespaces();
    _name.Add("", "");//這樣就 去掉 attribute 里面的 xmlns:xsi 和 xmlns:xsd
    XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
    xmlWriterSettings.Encoding = new UTF8Encoding(false);//設(shè)置編碼,不能用Encoding.UTF8,會導(dǎo)致帶有BOM標(biāo)記
    xmlWriterSettings.Indent = true;//設(shè)置自動縮進(jìn)
    //xmlWriterSettings.OmitXmlDeclaration = true;//刪除XmlDeclaration:<?xml version="1.0" encoding="utf-16"?>
    //xmlWriterSettings.NewLineChars = "\r\n";
    //xmlWriterSettings.NewLineHandling = NewLineHandling.None;
    XmlSerializer xml = new XmlSerializer(type);
    try
    {
 using (XmlWriter xmlWriter = XmlWriter.Create(Stream, xmlWriterSettings))
 {
     //序列化對象
     xml.Serialize(xmlWriter, obj, _name);
 }
    }
    catch (InvalidOperationException)
    {
 throw;
    }
    return Encoding.UTF8.GetString(Stream.ToArray()).Trim();
}
#endregion
}

希望本文所述對大家的C#程序設(shè)計有所幫助。

相關(guān)文章

  • C# String Replace高效的實例方法

    C# String Replace高效的實例方法

    C# String Replace高效的實例方法,需要的朋友可以參考一下
    2013-05-05
  • C#實現(xiàn)多線程下載文件的方法

    C#實現(xiàn)多線程下載文件的方法

    這篇文章主要介紹了C#實現(xiàn)多線程下載文件的方法,實例分析了C#多線程及文件傳輸?shù)南嚓P(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • c# 網(wǎng)絡(luò)編程之tcp

    c# 網(wǎng)絡(luò)編程之tcp

    這篇文章主要介紹了c# 網(wǎng)絡(luò)編程之tcp的的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-02-02
  • C#實現(xiàn)微信分賬功能的完整步驟

    C#實現(xiàn)微信分賬功能的完整步驟

    這篇文章主要給大家介紹了關(guān)于C#實現(xiàn)微信分賬功能的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • C#啟動和停止windows服務(wù)的實例代碼

    C#啟動和停止windows服務(wù)的實例代碼

    這篇文章介紹了C#啟動和停止windows服務(wù)的實例代碼,有需要的朋友可以參考一下
    2013-09-09
  • C#.NET采用HTML模板發(fā)送電子郵件完整實例

    C#.NET采用HTML模板發(fā)送電子郵件完整實例

    這篇文章主要介紹了C#.NET采用HTML模板發(fā)送電子郵件的方法,主要包括了HTML模板、替換函數(shù)與郵件函數(shù)三部分,是非常實用的功能,需要的朋友可以參考下
    2014-09-09
  • C#獲取CPU編號的方法

    C#獲取CPU編號的方法

    這篇文章主要介紹了C#獲取CPU編號的方法,實例分析了C#獲取硬件信息的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • C# NetRemoting實現(xiàn)雙向通信

    C# NetRemoting實現(xiàn)雙向通信

    本篇文章主要介紹了C# NetRemoting實現(xiàn)雙向通信,.Net Remoting 是由客戶端通過Remoting,訪問通道以獲得服務(wù)端對象,再通過代理解析為客戶端對象來實現(xiàn)通信的
    2017-03-03
  • C#自定義WPF中Slider的Autotooltip模板

    C#自定義WPF中Slider的Autotooltip模板

    這篇文章介紹了C#自定義WPF中Slider的Autotooltip模板的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 淺談C# 構(gòu)造方法(函數(shù))

    淺談C# 構(gòu)造方法(函數(shù))

    這篇文章主要介紹了C# 構(gòu)造方法(函數(shù))的的相關(guān)資料,文中講解非常詳細(xì),幫助大家更好的學(xué)習(xí)C#,感興趣的朋友可以了解下
    2020-06-06

最新評論