国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#實現Xml序列化與反序列化的方法

2019-10-29 21:47:37
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了C#實現Xml序列化與反序列化的方法,將序列化與反序列化的方法封裝入一個類文件中,包含了較為詳盡的注釋說明,非常具有實用價值,需要的朋友可以參考下
 

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

 

復制代碼代碼如下:
/// <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">字節流</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);//設置編碼,不能用Encoding.UTF8,會導致帶有BOM標記 
    xmlWriterSettings.Indent = true;//設置自動縮進
    //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#程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 呼伦贝尔市| 喀喇| 宁化县| 张北县| 沛县| 江孜县| 乌拉特后旗| SHOW| 沐川县| 涞源县| 施秉县| 蒙自县| 新源县| 宁强县| 德昌县| 观塘区| 神农架林区| 梅河口市| 义乌市| 措勤县| 湖南省| 济宁市| 临清市| 伊吾县| 恩施市| 商南县| 赤水市| 札达县| 元阳县| 新乡市| 万安县| 高密市| 卢龙县| 平陆县| 乌恰县| 江西省| 长武县| 宜兰县| 阿坝| 彭州市| 错那县|