当前位置: 编程技术>.net/c#/asp.net
C#实现复杂XML的序列化与反序列化
来源: 互联网 发布时间:2014-11-03
本文导语: 本文以一个实例的形式讲述了C#实现复杂XML的序列化与反序列化的方法。分享给大家供大家参考。具体方法如下: 已知.xml(再此命名default.xml)文件,请将其反序列化到一个实例对象。 Default.XML文件如下: ...
本文以一个实例的形式讲述了C#实现复杂XML的序列化与反序列化的方法。分享给大家供大家参考。具体方法如下:
已知.xml(再此命名default.xml)文件,请将其反序列化到一个实例对象。
Default.XML文件如下:
C#示例代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Serialization; namespace 多层级反序列 { [XmlType(TypeName = "config")] public class XmlConfig { [XmlArray("rules")] public List rules { get; set; } } [XmlType(TypeName = "rule")] public class rule { [XmlAttribute] public string name { get; set; } [XmlArray("params")] public List @params { get; set; } } [XmlType(TypeName = "item")] public class paramsItem { [XmlAttribute] public string name { get; set; } [XmlAttribute] public string type { get; set; } [XmlAttribute] public string pattern { get; set; } } class Program { static void Main(string[] args) { /* XmlConfig xml1 = DeserializeFromXml("default.xml"); XmlConfig xml = new XmlConfig(); SerializeToXml("default.xml", xml); */ XmlConfig xml1 = DeserializeFromXml("default.xml"); } /// /// XML序列化某一类型到指定的文件 /// /// /// /// public static void SerializeToXml(string filePath, T obj) { try { using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filePath)) { System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T)); xs.Serialize(writer, obj); } } catch (Exception ex) { } } /// /// 从某一XML文件反序列化到某一类型 /// /// 待反序列化的XML文件名称 /// 反序列化出的 /// public static T DeserializeFromXml(string filePath) { try { if (!System.IO.File.Exists(filePath)) throw new ArgumentNullException(filePath + " not Exists"); using (System.IO.StreamReader reader = new System.IO.StreamReader(filePath)) { System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T)); T ret = (T)xs.Deserialize(reader); return ret; } } catch (Exception ex) { return default(T); } } } }
希望本文所述对大家的C#程序设计有所帮助。