C#读取XML文件,反序列化为指定对象
来源:互联网 发布:乐乎lofter4.9.0 编辑:程序博客网 时间:2024/06/05 22:53
Xml序列化帮助类:
public class XmlSerializeHelper { public static string Serialize<T>(T obj) { return Serialize<T>(obj, Encoding.UTF8); } /// <summary> /// 实体对象序列化成xml字符串 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="obj"></param> /// <returns></returns> public static string Serialize<T>(T obj, Encoding encoding) { try { if (obj == null) throw new ArgumentNullException("obj"); var ser = new XmlSerializer(obj.GetType()); using (var ms = new MemoryStream()) { using (var writer = new XmlTextWriter(ms, encoding)) { writer.Formatting = Formatting.Indented; ser.Serialize(writer, obj); } var xml = encoding.GetString(ms.ToArray()); xml = xml.Replace("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"", ""); xml = xml.Replace("xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"", ""); return xml; } } catch (Exception ex) { throw ex; } } /// <summary> /// 反序列化xml字符为对象,默认为Utf-8编码 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="xml"></param> /// <returns></returns> public static T DeSerialize<T>(string xml) where T : new() { return DeSerialize<T>(xml, Encoding.UTF8); } /// <summary> /// 反序列化xml字符为对象 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="xml"></param> /// <param name="encoding"></param> /// <returns></returns> public static T DeSerialize<T>(string xml, Encoding encoding) where T : new() { try { var mySerializer = new XmlSerializer(typeof(T)); using (var ms = new MemoryStream(encoding.GetBytes(xml))) { using (var sr = new StreamReader(ms, encoding)) { return (T)mySerializer.Deserialize(sr); } } } catch (Exception e) { return default(T); } } }xml文档内容:
<?xml version="1.0" encoding="utf-8" ?><SupplierList> <Supplier name="苏宁易购" href="http://112.74.98.194/emall/11118_0_0_0_0_0_0_0.html?page="/> <Supplier name="京东商城" href="http://112.74.98.194/emall/11111_0_0_0_0_0_0_0.html?page="/> <Supplier name="国美在线" href="http://112.74.98.194/emall/11113_0_0_0_0_0_0_0.html?page="/> <Supplier name="又一朝阳" href="http://112.74.98.194/emall/11115_0_0_0_0_0_0_0.html?page="/></SupplierList>对应实体类:
using System.Xml.Serialization;
[XmlRoot("SupplierList")] public class SupplierList { [XmlElement("Supplier")] public List<Supplier> DataSource { get; set; } } [XmlType("Supplier")] public class Supplier { [XmlAttribute("href")] public string Href { get; set; } [XmlAttribute("name")] public string Name { get; set; } }读取Xml文件,反序列化为指定对象:
FileStream fs = File.Open("Attach\\Supplier.xml", FileMode.Open, FileAccess.Read); StreamReader sr = new StreamReader(fs); string text = sr.ReadToEnd(); var list = XmlSerializeHelper.DeSerialize<SupplierList>(text);
如果要序列化指定的实体类,则需要在类上打[Serializable]标签.
0 0
- C#读取XML文件,反序列化为指定对象
- c# xml字符串 反序列化为实例对象
- C#从类序列化为xml文件,和从xml文件反序列化为类,XmlSerializer
- 对象序列化反序列化为xml
- XML字符串反序列化为对象
- XML文件反序列化为实体类
- 序列化对象为xml文件,将xml文件反序列化为对象
- C#如何把类CLASS实例进行序列化及反序列化为XML文件
- 把对象序列化为xml格式和反序列化
- asp.net xml反序列化为对象(对像序列化为xml)
- C#温故而知新学习系列之XML编程—8-XMLSerializer类把XML文档反序列化为对象
- c#将对象序列化为字符串和将字符串反序列化为对象
- c#将对象序列化为字符串和将字符串反序列化为对象
- C#编程:对象序列化为字节数组以及字节数组反序列化为对象
- JSON解析类库之Gson(6) --- 从指定的流中读取Json,并反序列化为指定类的对象
- C#序列化/反序列化对象.将对象写入文件,从文件读取对象.
- unity xml反序列化为数据类
- MVC接收前台json数据,反序列化为指定实体对象
- Android将bitmap保存到自定义路径
- 国内CA机构沃通错误颁发GitHub域名SSL证书
- switc—case 语句
- IK Analyzer 类图关系
- MySQL数据的主从复制、半同步复制和主主复制详解
- C#读取XML文件,反序列化为指定对象
- spring mvc拦截器和<mvc:annotation-driven />的详解
- iOS 广告轮播图的实现与封装
- tjut 3538
- VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
- HTTP状态码
- Binary Tree Level Order Traversal 1+2
- JAVA AES字符串解密算法可读取文件
- 一些总结