时间:2021-05-20
本文以一个实例的形式讲述了C#实现复杂XML的序列化与反序列化的方法。分享给大家供大家参考。具体方法如下:
已知.xml(再此命名default.xml)文件,请将其反序列化到一个实例对象。
Default.XML文件如下:
<?xml version="1.0" encoding="utf-8" ?><config> <rules> <rule name="namea"> <params> <item name="p" type="get" pattern="(ios|android|)" /> <item name="cid" type="get" pattern="(ios|android|)" /> <item name="type" type="get" pattern="(ios|android|)" /> <item name="sort" type="get" pattern="(ios|android|)" /> <item name="action" type="post" pattern="(ios|android|)" /> <item name="userAgent" type="header" pattern="(ios|android|)" /> </params> </rule> <rule name="nameb"> <params> <item name="p" type="get" pattern="(ios|android|)" /> <item name="cid" type="get" pattern="(ios|android|)" /> <item name="type" type="get" pattern="(ios|android|)" /> <item name="sort" type="get" pattern="(ios|android|)" /> <item name="action" type="post" pattern="(ios|android|)" /> <item name="userAgent" type="header" pattern="(ios|android|)" /> </params> </rule> <rule name="namec"> <params> <item name="p" type="get" pattern="(ios|android|)" /> <item name="cid" type="get" pattern="(ios|android|)" /> <item name="type" type="get" pattern="(ios|android|)" /> <item name="sort" type="get" pattern="(ios|android|)" /> <item name="action" type="post" pattern="(ios|android|)" /> <item name="userAgent" type="header" pattern="(ios|android|)" /> </params> </rule> <rule name="named"> <params> <item name="p" type="get" pattern="(ios|android|)" /> <item name="cid" type="get" pattern="(ios|android|)" /> <item name="type" type="get" pattern="(ios|android|)" /> <item name="sort" type="get" pattern="(ios|android|)" /> <item name="action" type="post" pattern="(ios|android|)" /> <item name="userAgent" type="header" pattern="(ios|android|)" /> </params> </rule> </rules></config>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<rule> rules { get; set; } } [XmlType(TypeName = "rule")] public class rule { [XmlAttribute] public string name { get; set; } [XmlArray("params")] public List<paramsItem> @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<XmlConfig>("default.xml"); } /// <summary> /// XML序列化某一类型到指定的文件 /// </summary> /// <param name="filePath"></param> /// <param name="obj"></param> /// <param name="type"></param> public static void SerializeToXml<T>(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) { } } /// <summary> /// 从某一XML文件反序列化到某一类型 /// </summary> /// <param name="filePath">待反序列化的XML文件名称</param> /// <param name="type">反序列化出的</param> /// <returns></returns> public static T DeserializeFromXml<T>(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); } } }}PS:这里再为大家提供几款关于xml操作的在线工具供大家参考使用:
在线XML/JSON互相转换工具:
http://tools.jb51.net/code/xmljson
在线格式化XML/在线压缩XML:
http://tools.jb51.net/code/xmlformat
XML在线压缩/格式化工具:
http://tools.jb51.net/code/xml_format_compress
希望本文所述对大家的C#程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了C#实现Xml序列化与反序列化的方法。分享给大家供大家参考。具体实现方法如下:复制代码代码如下://////Xml序列化与反序列化///publi
本文实例讲述了C#中datatable序列化与反序列化,分享给大家供大家参考。具体方法如下:一、datatable序列化publicstringgetSendD
提到序列化与反序列化,通常会想到json,xml.在J2EE的开发中,这是很常用的技术,比如一个javaclass与xml之间的序列化与反序列化,我们可以通过x
序列化与反序列化是.net程序设计中常见的应用,本文即以实例展示了.net实现序列化与反序列化的方法。具体如下:一般来说,.net中的序列化其实就是将一个对象的
本文实例讲述了C#序列化与反序列化的方法。分享给大家供大家参考。具体分析如下:把“对象”转换为“字节序列”的过程称为对象的序列化。把“字节序列”恢复为“对象”的