XML的序列化和反序列化
来源:互联网 发布:宣传册软件 编辑:程序博客网 时间:2024/05/30 23:02
最近在做一个需求,是把passport返回的结果(xml)转变为我自己定义的C#对象。
首先提供一个序列化的工具类:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;using System.Data;using System.Xml;using System.Xml.Serialization; /// <summary>/// Xml序列化与反序列化/// </summary>public class XmlUtil{ #region 反序列化 /// <summary> /// 反序列化 /// </summary> /// <param name="type">类型</param> /// <param name="xml">XML字符串</param> /// <returns></returns> public static object Deserialize(Type type, string xml) { try { 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="type">类型</param> /// <param name="obj">对象</param> /// <returns></returns> public static string Serializer(Type type, object obj) { MemoryStream Stream = new MemoryStream(); XmlSerializer xml = new XmlSerializer(type); try { //序列化对象 xml.Serialize(Stream, obj); } catch (InvalidOperationException) { throw; } Stream.Position = 0; StreamReader sr = new StreamReader(Stream); string str = sr.ReadToEnd(); sr.Dispose(); Stream.Dispose(); return str; } #endregion}
假如xml是:
public string testXML = "<?xml version=\"1.0\" encoding=\"gb2312\"?><user><id>12654</id><name>wangjue</name><displayName>王xx</displayName><token>DBDF3367E9F6490ABB8AC711F94E24CE</token><departmentCode>IT</departmentCode><departmentName>技术部</departmentName></user>";
对这个xml进行一下序列化。
首先定义我的C#类
[XmlRoot("user")]//序列化根节点需要使用的名称 public class PassportUser { [XmlElement("id")]//序列化子节点需要使用的名称 public int Id { set; get; } [XmlElement("name")] public string Name { set; get; } [XmlElement("displayName")] public string DisplayName { set; get; } [XmlElement("token")] public string Token { set; get; } [XmlElement("departmentCode")] public string DepartmentCode { set; get; } [XmlElement("departmentName")] public string DepartmentName { set; get; } }
调用:
var result = Deserialize(typeof(PassportUser), testXML);
成功实现。
参考自:http://blog.okbase.net/haobao/archive/62.html
- XML序列化和反序列化
- XML序列化和反序列化
- Xml序列化和反序列化
- XML序列化和反序列化
- xml序列化和反序列化
- XML序列化和反序列化
- XML序列化和反序列化
- Xml序列化和反序列化
- .NET对象的XML序列化和反序列化
- .NET对象的XML序列化和反序列化
- .NET对象的XML序列化和反序列化
- xml的序列化和反序列化
- xml文件的序列化 和反序列化
- .NET对象的XML序列化和反序列化
- C# 对象的xml序列化和反序列化
- 对象的Xml序列化和反序列化
- XML的序列化和反序列化
- C# XML 的序列化和反序列化
- 【Android UI设计与开发】第03期:引导界面(三)仿微信引导界面以及动画效果
- COleDateTime ParseDateTime 方法
- SYS_CONNECT_BY_PATH函数用法 ORACLE
- Ubuntu 12.04搭建hadoop2.0.4单机版环境
- [python] 使用ftplib模块在交互式窗口下连接FTP的练习
- XML的序列化和反序列化
- C中调用C++与C++调用C
- Notification与NotificationManager详细介绍
- Android Studio 的快捷键
- 闲来无事
- 触发器
- Spring MVC框架
- 当时我就无语了啊
- ssh框架中,普通类获取sevice接口