//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转换为对象操作类详解的更多相关文章

  1. java使用POI操作XWPFDocument中的XWPFRun(文本)对象的属性详解

    java使用POI操作XWPFDocument中的XWPFRun(文本)对象的属性详解 我用的是office word 2016版 XWPFRun是XWPFDocument中的一段文本对象(就是一段文 ...

  2. URLConnection类详解-转

    转-http://www.cnblogs.com/shijiaqi1066/p/3753224.html 1. URLConnection概述 URLConnection是一个抽象类,表示指向URL指 ...

  3. [NewLife.XCode]实体类详解

    NewLife.XCode是一个有10多年历史的开源数据中间件,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含 ...

  4. 【转载】图说C++对象模型:对象内存布局详解

    原文: 图说C++对象模型:对象内存布局详解 正文 回到顶部 0.前言 文章较长,而且内容相对来说比较枯燥,希望对C++对象的内存布局.虚表指针.虚基类指针等有深入了解的朋友可以慢慢看.本文的结论都在 ...

  5. CEPH-4:ceph RadowGW对象存储功能详解

    ceph RadosGW对象存储使用详解 一个完整的ceph集群,可以提供块存储.文件系统和对象存储. 本节主要介绍对象存储RadosGw功能如何灵活的使用,集群背景: $ ceph -s clust ...

  6. Java String类详解

    Java String类详解 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 类结构: public final ...

  7. JAVAEE学习——struts2_01:简介、搭建、架构、配置、action类详解和练习:客户列表

    一.struts2是什么 1.概念 2.struts2使用优势以及历史 二.搭建struts2框架 1.导包 (解压缩)struts2-blank.war就会看到 2.书写Action类 public ...

  8. C# 内置 DateTime类详解

    C# 内置 DateTime类详解 摘抄自微软官方文档,用来方便自己查阅:网址:https://msdn.microsoft.com/zh-cn/library/system.datetime(v=v ...

  9. Android游戏开发之旅 View类详解

    Android游戏开发之旅 View类详解 自定义 View的常用方法: onFinishInflate() 当View中所有的子控件 均被映射成xml后触发 onMeasure(int, int) ...

随机推荐

  1. 移动前端头部标签(HTML5 head meta)

    移动前端开发中添加一些webkit专属的HTML5头部标签,帮助浏览器更好解析html代码,更好地将移动web前端页面表现出来.本文整理一些常用的meta标签. <!DOCTYPE html&g ...

  2. 纯CSS 实现tooltip 内容提示信息效果

    Tooltip 也就是内容的提示信息,合理使用可以给用户比较好的体验. 实现方法有很多种,有很多JS 插件,我这里介绍的是纯CSS实现的方法,兼容性也比较靠谱,IE8+均可正常显示.实现方法也非常简单 ...

  3. CentOS6.4安装mysql2redis

    1.安装apr 下载:http://apache.dataguru.cn//apr/apr-1.5.1.tar.gz tar zxvf apr-.tar.gz cd apr- vi configure ...

  4. topcoder SRM 622 DIV2 BoxesDiv2

    注意题目这句话,Once you have each type of candies in a box, you want to pack those boxes into larger boxes, ...

  5. [Cocos2d-x For WP8]DrawPrimitives画图

    在Silverlight框架的WP8应用程序里面,我们画几何图形的时候会通过Line等等的类在用C#代码或者在XAML上画图,那么在Cocos2d-x For WP8里面我们一样也可以实现这样的功能. ...

  6. 3分钟wamp安装redis扩展超级简单

    windows10(win8.1等系统应该是一样的) wampserver2.5 -Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b 很简单只需要3步,主要是安装redi ...

  7. 500-internal server error 错误提示到配置文件的某行,并显示乱码

    UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码.UTF-8用1到4个字节编码UNICODE字符.用在网页上可 ...

  8. FS210开发板上Qt4.7.0移植过程

    作者:冯老师,华清远见嵌入式学院讲师. 1. 搭建Qt开发环境平台 1.开发环境:ubuntu 12.04 2.交叉编译链:arm-cortex_a8-linux-gnueabi 3.开发板:FS21 ...

  9. Android控件属性大全(转)

    http://blog.csdn.net/pku_android/article/details/7365685 LinearLayout         线性布局        子元素任意: Tab ...

  10. winform退出或关闭窗体时弹窗提示代码:转

    winform退出或关闭窗体时弹窗提示代码,当我们点击窗体的 X 按钮时,会弹出一个对话框,询问我们是直接退出,还是最小化到托盘,还是取消这个行为.或是是否保存当前修改等等.以下以最小化到托盘为例. ...