using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Serialization; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//序列化
Person person = new Person() { Name = "dnawo", Age = };
string xml = Serialize(person);
Console.WriteLine(xml); //反序列化
person = Deserialize<Person>(xml);
Console.WriteLine(person.Name); Console.ReadKey();
} /// <summary>
/// 序列化
/// </summary>
/// <param name="o"></param>
/// <returns></returns>
public static string Serialize(object o)
{
return Serialize(o, new UTF8Encoding(false));
} /// <summary>
/// 序列化
/// </summary>
/// <param name="o"></param>
/// <param name="encode"></param>
/// <returns></returns>
public static string Serialize(object o, Encoding encode)
{
string result = string.Empty;
//方法1:
using (MemoryStream output = new MemoryStream())
{
XmlSerializer serializer = new XmlSerializer(o.GetType());
serializer.Serialize(output, o);
result = encode.GetString(output.ToArray());
}
//方法2:
//using (MemoryStream output = new MemoryStream())
//{
// using (XmlTextWriter writer = new XmlTextWriter(output, encode))
// {
// XmlSerializer serializer = new XmlSerializer(o.GetType());
// serializer.Serialize(writer, o);
// }
// result = encode.GetString(output.ToArray());
//}
//方法3:可删除xml声明和默认命名空间(xmlns:xsi,xmlns:xsd)
//XmlWriterSettings setting = new XmlWriterSettings();
//setting.Encoding = encode;
//setting.OmitXmlDeclaration = true;
//XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
//namespaces.Add("", "");
//using (MemoryStream output = new MemoryStream())
//{
// using (XmlWriter writer = XmlWriter.Create(output, setting))
// {
// XmlSerializer serializer = new XmlSerializer(o.GetType());
// serializer.Serialize(writer, o, namespaces);
// result = encode.GetString(output.ToArray());
// }
//}
return result;
} /// <summary>
/// 反序列化
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="str"></param>
/// <returns></returns>
public static T Deserialize<T>(string str) where T : class
{
return Deserialize<T>(str, new UTF8Encoding(false));
} /// <summary>
/// 反序列化
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="str"></param>
/// <param name="encode"></param>
/// <returns></returns>
public static T Deserialize<T>(string str, Encoding encode) where T : class
{
T result = null;
//方法1:
using (MemoryStream input = new MemoryStream(encode.GetBytes(str)))
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
result = serializer.Deserialize(input) as T;
}
//方法2:
//using (MemoryStream input = new MemoryStream(encode.GetBytes(str)))
//{
// using (XmlTextReader reader = new XmlTextReader(input))
// {
// XmlSerializer serializer = new XmlSerializer(typeof(T));
// result = serializer.Deserialize(reader) as T;
// }
//}
//方法3:
//using (MemoryStream input = new MemoryStream(encode.GetBytes(str)))
//{
// using (XmlReader reader = XmlReader.Create(input))
// {
// XmlSerializer serializer = new XmlSerializer(typeof(T));
// result = serializer.Deserialize(reader) as T;
// }
//}
return result;
}
}
   /// <summary>
/// 测试类
/// </summary>
[XmlRoot("per")]
public class Person
{
[XmlElement("na")]
public string Name { get; set; }
[XmlElement("ag")]
public int Age { get; set; }
}

运行结果:

<?xml version="1.0" encoding="utf-8"?><per xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><na>dnawo</na><ag></ag></per>

http://www.mzwu.com/article.asp?id=3523

C# XML序列化/反序列化类XmlSerializer使用示例的更多相关文章

  1. C# XML序列化/反序列化参考

    .NET提供了很不错的XML序列化/反序列化器,(它们所在的命名空间为System.Xml.Serialization)这是很方便的,下面对它的使用做一些总结,以供参考. 1,简单序列化 public ...

  2. C# Json库 和 xml 序列化反序列化 存在的问题

    json 正常情况下不会对私有成员进行序列化和反序列化, 因此在用json做深拷贝时, 就会丢失数据. 解决办法:       声明成公有成员. json在序列化和反序列化时, 如果类中有IComma ...

  3. XML序列化反序列化—常用类

    public class XMLSerializer    {        #region (public) xml序列化        /// <summary>        /// ...

  4. C#工具类之Xml序列化扩展类

    using System; using System.IO; using System.Linq; using System.Runtime.Serialization; using System.T ...

  5. php json与xml序列化/反序列化

    在web开发中对象的序列化与反序列化经常使用,比较主流的有json格式与xml格式的序列化与反序列化,今天想写个jsop的小demo,结果发现不会使用php序列化,查了一下资料,做个笔记 简单数组js ...

  6. C# XML序列化帮助类代码

    public static class XmlHelper { private static void XmlSerializeInternal(Stream stream, object o, En ...

  7. C# 复杂格式多级深度XML序列化反序列化

     default.xml 文件如下: <config><partnerships>  <partnership name="Main_Listener" ...

  8. XML序列化/反序列化数据库形式保存和读取。

    直接上码: 首先创建class1类 public class Class1 { public string name { get; set; } public int age { get; set; ...

  9. XML序列化反序列化

    using System; using System.Collections.Generic; using System.IO; using System.Xml.Serialization; nam ...

随机推荐

  1. 原生JS中unshift与shift

    shift() 方法:shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值:用法:arrayObject.shift()如果数组是空的,那么 shift() 方法将不进行任何操作 ...

  2. java——构造方法重载

    class Person { private String name ; private int age ; public Person() { } public Person(String n,in ...

  3. Ubuntu下如何禁用IPv6

    Ubuntu下如何禁用IPv6 2013-10-16 11:32:02 分类: HADOOP      分布式下的hadoop/hbase运行总出问题,zookeeper连接总是出问题,怀疑可能是ip ...

  4. dialog 设置maxHeight 最大高度

    WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);Displ ...

  5. 【Java】NIO中Channel的注册源码分析

    Channel的注册是在SelectableChannel中定义的: public abstract SelectionKey register(Selector sel, int ops, Obje ...

  6. js混杂笔记

    1.判断对象为空的方法 1)Object.keys({}).length === 0 // true 2)Object.getOwnPropertyNames({}).length === 0 // ...

  7. unity2017分离动作

    http://tsubakit1.hateblo.jp/entry/2015/06/01/235939 using UnityEngine; using UnityEditor; using Syst ...

  8. 浅谈Unity的渲染优化(1): 性能分析和瓶颈判断(上篇)

    http://www.taidous.com/article-667-1.html 前言 首先,这个系列文章做个大致的介绍,题目"浅谈Unity",因为公司和国内大部分3D手游开发 ...

  9. 51nod1113(矩阵快速幂模板)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1113 题意:中文题诶- 思路:矩阵快速幂模板 代码: #inc ...

  10. 关于lspci命令

    lspci是一个用来查看系统中所有PCI总线以及连接到该总线上的设备的工具. 命令格式为 lspci -参数 (不加参数显示所有硬件设备) 至于有哪些参数及其详细用法可以看下这篇博客:http://w ...