C# XML序列化/反序列化类XmlSerializer使用示例
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使用示例的更多相关文章
- C# XML序列化/反序列化参考
.NET提供了很不错的XML序列化/反序列化器,(它们所在的命名空间为System.Xml.Serialization)这是很方便的,下面对它的使用做一些总结,以供参考. 1,简单序列化 public ...
- C# Json库 和 xml 序列化反序列化 存在的问题
json 正常情况下不会对私有成员进行序列化和反序列化, 因此在用json做深拷贝时, 就会丢失数据. 解决办法: 声明成公有成员. json在序列化和反序列化时, 如果类中有IComma ...
- XML序列化反序列化—常用类
public class XMLSerializer { #region (public) xml序列化 /// <summary> /// ...
- C#工具类之Xml序列化扩展类
using System; using System.IO; using System.Linq; using System.Runtime.Serialization; using System.T ...
- php json与xml序列化/反序列化
在web开发中对象的序列化与反序列化经常使用,比较主流的有json格式与xml格式的序列化与反序列化,今天想写个jsop的小demo,结果发现不会使用php序列化,查了一下资料,做个笔记 简单数组js ...
- C# XML序列化帮助类代码
public static class XmlHelper { private static void XmlSerializeInternal(Stream stream, object o, En ...
- C# 复杂格式多级深度XML序列化反序列化
default.xml 文件如下: <config><partnerships> <partnership name="Main_Listener" ...
- XML序列化/反序列化数据库形式保存和读取。
直接上码: 首先创建class1类 public class Class1 { public string name { get; set; } public int age { get; set; ...
- XML序列化反序列化
using System; using System.Collections.Generic; using System.IO; using System.Xml.Serialization; nam ...
随机推荐
- java 通过System.getProperties()获取系统参数
转自:https://www.cnblogs.com/ksuifeng/archive/2010/09/25/1834416.html 1.java的System.getProperty()方法可以获 ...
- 集成hibernateDaoSupport实现增删改查
1. package edu.jlu.fuliang.dao.impl; import java.util.List; import org.springframework.orm.hibernate ...
- 表单enctype属性
首先知道enctype这个属性管理的是表单的MIME编码.共有三个值可选:1.application/x-www-form-urlencoded2.multipart/form-data3.text/ ...
- eclipse中jquery.js文件有错误提示…
eclipse中jquery.js文件有错误提示的解决办法 2013-04-06 19:18 浏览次数:382 由于jquery.js文件进行了压缩,压缩之后的语法eclipse无法完全识别,所以有错 ...
- SSH 代码笔记
os.path :https://www.cnblogs.com/wuxie1989/p/5623435.html .format():https://blog.csdn.net/i_chaoren/ ...
- 能量项链 洛谷P1063
1154 能量项链 2006年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 在Mars星球上,每个M ...
- FISCO BCOS WorkShop | 区块链开发特训营,开课啦!
FISCO BCOS是完全开源的联盟区块链底层技术平台,由金融区块链合作联盟(深圳)(简称金链盟)成立开源工作组通力打造.开源工作组成员包括博彦科技.华为.深证通.神州数码.四方精创.腾讯.微众银行. ...
- SpringMVC之一个简单的例子
一.一个简单的例子 二.web.xml文件配置 三.spring-mvc.xml文件(等同于struts2的struts文件) 四.login.jsp(登录页面) 五.登录成功的页面(success. ...
- C#代码规范整理
命名规范制定意义 1. 方便代码的交流和维护,便于日后自己的再次阅读. 2. 不影响编码的效率,不与大众习惯冲突. 3. 使代码更美观.阅读更方便. 4. 使代码的逻辑更清晰.更易于理解. 名词解释 ...
- codeforces540E-树状数组求逆序对
1-1e9的数据范围 但有1e5个区间 所以可以考虑把没有涉及到的区间缩成一个点 然后树状数组求逆序对 #include<bits/stdc++.h> #define inf 0x3f3f ...