最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

本文實(shí)例講述了C#實(shí)現(xiàn)Xml序列化與反序列化的方法。分享給大家供大家參考。具體實(shí)現(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,會(huì)導(dǎo)致帶有BOM標(biāo)記
    xmlWriterSettings.Indent = true;//設(shè)置自動(dòng)縮進(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è)計(jì)有所幫助。

相關(guān)文章

最新評論

长宁区| 平乡县| 湘乡市| 赞皇县| 巧家县| 陕西省| 独山县| 简阳市| 五莲县| 成安县| 乌鲁木齐市| 司法| 洪江市| 剑阁县| 黔西县| 德安县| 隆德县| 宁南县| 清徐县| 鄂州市| 聊城市| 赣榆县| 万盛区| 磐石市| 永嘉县| 孝昌县| 申扎县| 台湾省| 肃宁县| 平阳县| 缙云县| 大埔县| 德昌县| 洛浦县| 庆云县| 红安县| 隆子县| 广南县| 密云县| 武宣县| 揭阳市|