手机
当前位置:查字典教程网 >编程开发 >C#教程 >C#实现Xml序列化与反序列化的方法
C#实现Xml序列化与反序列化的方法
摘要:本文实例讲述了C#实现Xml序列化与反序列化的方法。分享给大家供大家参考。具体实现方法如下:复制代码代码如下://////Xml序列化与反序...

本文实例讲述了C#实现Xml序列化与反序列化的方法。分享给大家供大家参考。具体实现方法如下:

复制代码 代码如下:/// <summary>

/// Xml序列化与反序列化

/// </summary>

public class XmlUtil

{

public static string GetRoot(string xml)

{

XmlDocument doc = new XmlDocument();

doc.LoadXml(xml.Replace("rn", "").Replace("", "").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("rn", "").Replace("", "").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:<"1.0" encoding="utf-16"?>

//xmlWriterSettings.NewLineChars = "rn";

//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#程序设计有所帮助。

【C#实现Xml序列化与反序列化的方法】相关文章:

c#重写TabControl控件实现关闭按钮的方法

用C#实现启动另一程序的方法实例

C#实现对AES加密和解密的方法

深入理解C#序列化与反序列化的详解

C#三种判断数据库中取出的字段值是否为空(NULL) 的方法

C# 获取属性名的方法

C# 格式化字符首字母大写的方法

C#技巧之快速删除bin和obj文件夹的方法

用C#获取硬盘序列号,CPU序列号,网卡MAC地址的源码

c#数据的序列化和反序列化(推荐版)

精品推荐
分类导航