XML转换为对象操作类详解
//XML转换为对象操作类
//一,XML与Object转换类 using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Xml;
using System.Xml.Serialization; namespace WebApplication1
{
public sealed class XMLSerilizable
{
/// <summary>
/// 将object对象序列化成XML
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="encoding"></param>
/// <returns></returns>
public static string ObjectToXML<T>(T t, Encoding encoding)
{
XmlSerializer ser = new XmlSerializer(t.GetType());
using (MemoryStream mem = new MemoryStream())
{
using (XmlTextWriter writer = new XmlTextWriter(mem, encoding))
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
ser.Serialize(writer, t, ns);
return encoding.GetString(mem.ToArray()).Trim();
}
}
} /// <summary>
/// 将XML反序列化成对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="source"></param>
/// <param name="encoding"></param>
/// <returns></returns>
public static T XMLToObject<T>(string source, Encoding encoding)
{
XmlSerializer mySerializer = new XmlSerializer(typeof(T));
using (MemoryStream stream = new MemoryStream(encoding.GetBytes(source)))
{
return (T)mySerializer.Deserialize(stream);
}
} /// <summary>
/// 二进制方式序列化对象
/// </summary>
/// <param name="testUser"></param>
public static string Serialize<T>(T obj)
{
MemoryStream ms = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);
return ms.ToString();
} /// <summary>
/// 二进制方式反序列化对象
/// </summary>
/// <returns></returns>
public static T DeSerialize<T>(string str) where T : class
{
MemoryStream ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(str));
BinaryFormatter formatter = new BinaryFormatter();
T t = formatter.Deserialize(ms) as T;
return t;
} }
} //二,测试类 using System;
using System.Xml.Serialization; namespace WebApplication1
{
[Serializable]
[XmlRoot("Result")]
public class XMLClass
{
private string rtnValue;
[XmlElement("Value")]
public string RtnValue
{
get { return rtnValue; }
set { rtnValue = value; }
}
private string rtnKey;
[XmlElement("Key")]
public string RtnKey
{
get { return rtnKey; }
set { rtnKey = value; }
}
}
} //三,调用 using System;
using System.Text; namespace WebApplication1
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
XMLClass xc = new XMLClass();
xc.RtnKey = "TestXML";
xc.RtnValue = "ObjectToXML";
string xml = XMLSerilizable.ObjectToXML<XMLClass>(xc,System.Text.Encoding.UTF8); StringBuilder strXML = new StringBuilder("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
strXML.Append("<Result>");
strXML.AppendFormat("<Key>{0}</Key>","TestXML");
strXML.AppendFormat("<Value>{0}</Value>","XMLToObject");
strXML.Append("</Result>"); XMLClass xClass = XMLSerilizable.XMLToObject<XMLClass>(strXML.ToString(),System.Text.Encoding.UTF8);
}
}
}
XML转换为对象操作类详解的更多相关文章
- java使用POI操作XWPFDocument中的XWPFRun(文本)对象的属性详解
java使用POI操作XWPFDocument中的XWPFRun(文本)对象的属性详解 我用的是office word 2016版 XWPFRun是XWPFDocument中的一段文本对象(就是一段文 ...
- URLConnection类详解-转
转-http://www.cnblogs.com/shijiaqi1066/p/3753224.html 1. URLConnection概述 URLConnection是一个抽象类,表示指向URL指 ...
- [NewLife.XCode]实体类详解
NewLife.XCode是一个有10多年历史的开源数据中间件,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含 ...
- 【转载】图说C++对象模型:对象内存布局详解
原文: 图说C++对象模型:对象内存布局详解 正文 回到顶部 0.前言 文章较长,而且内容相对来说比较枯燥,希望对C++对象的内存布局.虚表指针.虚基类指针等有深入了解的朋友可以慢慢看.本文的结论都在 ...
- CEPH-4:ceph RadowGW对象存储功能详解
ceph RadosGW对象存储使用详解 一个完整的ceph集群,可以提供块存储.文件系统和对象存储. 本节主要介绍对象存储RadosGw功能如何灵活的使用,集群背景: $ ceph -s clust ...
- Java String类详解
Java String类详解 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 类结构: public final ...
- JAVAEE学习——struts2_01:简介、搭建、架构、配置、action类详解和练习:客户列表
一.struts2是什么 1.概念 2.struts2使用优势以及历史 二.搭建struts2框架 1.导包 (解压缩)struts2-blank.war就会看到 2.书写Action类 public ...
- C# 内置 DateTime类详解
C# 内置 DateTime类详解 摘抄自微软官方文档,用来方便自己查阅:网址:https://msdn.microsoft.com/zh-cn/library/system.datetime(v=v ...
- Android游戏开发之旅 View类详解
Android游戏开发之旅 View类详解 自定义 View的常用方法: onFinishInflate() 当View中所有的子控件 均被映射成xml后触发 onMeasure(int, int) ...
随机推荐
- JS 特殊字符的魅力
特殊字符的魅力 说在前面—鸭子类型 鸭子类型是动态类型的一种风格,在这种风格中,一个对象有效的语义,不是由继承自特定的类或者实现特定的接口,而是由当前方法和属性的集合决定. “当看到一只鸟走起来像鸭子 ...
- 将类似 12.56MB 36.89KB 转成 以K为单位的数字【备忘】
select case RIGHT(RESOURCE_SIZE,2) when 'MB' THEN SUBSTRING_INDEX(RESOURCE_SIZE,'MB',1)*1024 ELSE SU ...
- Codeforces Round #228 (Div. 2) B. Fox and Cross
#include <iostream> #include <string> #include <vector> #include <algorithm> ...
- ACM: NBUT 1646 Internet of Lights and Switches - 二进制+map+vector
NBUT 1646 Internet of Lights and Switches Time Limit:5000MS Memory Limit:65535KB 64bit IO Fo ...
- 【hdu1394】Minimum Inversion Number
Problem Description The inversion number of a given number sequence a1, a2, ..., an is the number of ...
- 详解CALayer 和 UIView的区别和联系
详解CALayer 和 UIView的区别和联系 前言 前面发了一篇iOS 面试的文章,在说到 UIView 和 CALayer 的区别和联系的时候,被喵神指出没有切中要点,所以这里就 CALay ...
- [LintCode] Surrounded Regions 包围区域
Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A region is captured ...
- Hibernate中易错地方的总结
1.Hibernate中的配置文件要放在src下,注意不能放在包目录下 2.Hibernate中@Before @After方法不能再普通的类里用,只有在专门的JUnit测试用例里面用. 3.使用 ...
- List相关知识点.......课堂加整理
package lis0924; //接口List(列表) import java.util.ArrayList; import java.util.Iterator; import java.uti ...
- 32位的Win7系统下安装64位的Sql Sever?
来自:http://zhidao.baidu.com/link?url=nQBoaLgoOyYCUdI7V4WZCMlTW3tKscdkOnLTIvlYtPpwoVhQkSahq44HeofBfzFT ...