XML反序列化-- 多个相同元素(每个元素包含多节点)
来源:互联网 发布:淘宝网南极绒男童内衣 编辑:程序博客网 时间:2024/05/22 16:08
XML格式:
<Root> <CustomerInfo> <Parameters> <Parameter ParaName="Customer Name" ControlType="TextBox" ParaValue="" Required="1" AffectPara=""></Parameter> <Parameter ParaName="Region" ControlType="DropdownList" ParaValue="Asia,Europe,Other" Required="1" AffectPara="Country"></Parameter> <Parameter ParaName="Country" ControlType="DropdownList" ParaValue="" Required="1" AffectPara=""></Parameter> <Parameter ParaName="Shipping address" ControlType="TextBox" ParaValue="" Required="1" AffectPara=""></Parameter> <Parameter ParaName="Attention To" ControlType="TextBox" ParaValue="" Required="1" AffectPara=""></Parameter> <Parameter ParaName="Project / Evaluation" ControlType="TextBox" ParaValue="" Required="1" AffectPara=""></Parameter> <Parameter ParaName="Quantity" ControlType="DropdownList" ParaValue="5,10,15,20" Required="1" AffectPara=""></Parameter> <Parameter ParaName="Other information" ControlType="TextBox" ParaValue="" Required="0" AffectPara=""></Parameter> </Parameters> </CustomerInfo></Root>
关于XML序列化/反序列化的工具类:
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 XmlUtility{ #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}
实体类:
public class Root { private CustomerInfo _customerInfo; [XmlElement("CustomerInfo")] public CustomerInfo CustomerInfo { get { return _customerInfo; } set { _customerInfo = value; } } } public class CustomerInfo { private Parameters _parameters; [XmlElement("Parameters")] public Parameters Parameters { get { return _parameters; } set { _parameters = value; } } } public class Parameters { private Parameter[] _parameter; [XmlElement("Parameter")] public Parameter[] Parameter { get { return _parameter; } set { _parameter = value; } } } public class Parameter { private string _paraName; [XmlAttribute("ParaName")] public string ParaName { get { return _paraName; } set { _paraName = value; } } private string _controlType; [XmlAttribute("ControlType")] public string ControlType { get { return _controlType; } set { _controlType = value; } } private string _paraValue; [XmlAttribute("ParaValue")] public string ParaValue { get { return _paraValue; } set { _paraValue = value; } } private string _required; [XmlAttribute("Required")] public string Required { get { return _required; } set { _required = value; } } private string _affectPara; [XmlAttribute("AffectPara")] public string AffectPara { get { return _affectPara; } set { _affectPara = value; } } }
调用反序列化方法得到Parameter的数组集合:
string path = System.AppDomain.CurrentDomain.BaseDirectory;XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load("../test.xml");Root root = XmlUtility.Deserialize(typeof(Root), xmlDoc.OuterXml) as Root;Parameter[] Parameter = root.CustomerInfo.Parameters.Parameter;
调用序列化方法得到XML:
string xml = XmlUtility.Serializer(typeof(Root), root);Console.WriteLine(xml);Console.ReadKey();
0 0
- XML反序列化-- 多个相同元素(每个元素包含多节点)
- C语言 删除多个相同元素
- 先反序列化为list,再遍历list,将每个元素反序列化为hashmap
- 一个经过改良的XMLHelper(包含了序列化,反序列化,创建xml文件,读取节点
- post多个相同name的元素值获取
- jQuery一个元素绑定多个相同事件的解决
- xml中的元素,节点
- xml中的元素,节点
- XML节点与元素
- 通用函数: 加载多个函数, 紧邻目标元素节点后,下一个元素节点
- 单链表 (反序,删除相同元素)
- C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素”
- 包含多集合的json反序列化
- IBATIS 查询操作 查询条件包含多个元素
- Xml 反序列化
- xml反序列化
- xml反序列化
- XML节点元素命名规则
- windos安装laravel
- adroid复选框checkbox的使用
- iOS8 真机调试流程和iOS9免证书调试(一)
- crash 文件解析
- Jquery-1.10后attr和prop
- XML反序列化-- 多个相同元素(每个元素包含多节点)
- Parallels Desktop 如何使用键盘快捷键
- CUDA编程常见问题
- 关于导航栏重叠的一点记录
- 【练习题】在某个目录下查找是否存在某个文件或目录
- Mac上(Xcode7)使用Matlab调用libsvm库函数
- 《(数学篇)》 复数运算
- 无名管道
- 利用CUDA的矩阵乘法1 <利用 Kahan's Summation Formula 来提高CUDA 的浮点数运算精确度>