C#实现Xml序列化与反序列化的方法
C#实现Xml序列化与反序列化的方法
发布时间:2016-12-28 来源:查字典编辑
摘要:本文实例讲述了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#教程学习
热门C#教程学习
编程开发子分类