.NET对象的XML序列化和反序列化实例详解
来源:互联网 发布:java web 文件下载 编辑:程序博客网 时间:2024/05/18 18:44
.NET对象的XML序列化和反序列化是如何实现的呢?通过下面实例中的xml schema 描述了一个简单的人力资源信息,详细向你介绍.NET对象的XML序列化和反序列化的实现过程其中包含了XML的大部分格式,如XML元素相互嵌套, XML元素既有元素值,又有属性值。
XML序列化和反序列化实现1. 待序列化的类层次结构
- [XmlRoot("humanResource")]
- public class HumanResource
- {
- #region private data.
- private int m_record = 0;
- private Worker[] m_workers = null;
- #endregion
- [XmlAttribute(AttributeName="record")]
- public int Record
- {
- get { return m_record; }
- set { m_record = value; }
- }
- [XmlElement(ElementName="worker")]
- public Worker[] Workers
- {
- get { return m_workers; }
- set { m_workers = value; }
- }
- }
- public class Worker
- {
- #region private data.
- private string m_number = null;
- private InformationItem[] m_infoItems = null;
- #endregion
- [XmlAttribute("number")]
- public string Number
- {
- get { return m_number; }
- set { m_number = value; }
- }
- [XmlElement("infoItem")]
- public InformationItem[] InfoItems
- {
- get { return m_infoItems; }
- set { m_infoItems = value; }
- }
- }
- public class InformationItem
- {
- #region private data.
- private string m_name = null;
- private string m_value = null;
- #endregion
- [XmlAttribute(AttributeName = "name")]
- public string Name
- {
- get { return m_name; }
- set { m_name = value; }
- }
- [XmlText]
- public string Value
- {
- get { return m_value; }
- set { m_value = value; }
- }
- }
XML序列化和反序列化实现2. 序列化生成的xml结构
- ﹤?xml version="1.0" ?﹥
- ﹤humanResource
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:xsd="http://www.w3.org/2001/XMLSchema" record="2"﹥
- ﹤worker number="001"﹥
- ﹤infoItem name="name"﹥Michale﹤/infoItem﹥
- ﹤infoItem name="sex"﹥male﹤/infoItem﹥
- ﹤infoItem name="age"﹥25﹤/infoItem﹥
- ﹤/worker﹥
- ﹤worker number="002"﹥
- ﹤infoItem name="name"﹥Surce﹤/infoItem﹥
- ﹤infoItem name="sex"﹥male﹤/infoItem﹥
- ﹤infoItem name="age"﹥28﹤/infoItem﹥
- ﹤/worker﹥
- ﹤/humanResource﹥
XML序列化和反序列化实现3. 利用XmlSerializer类进行序列化和反序列化的实现
一般利用缓存机制实现xml文件只解析一次。
- public sealed class ConfigurationManager
- {
- private static HumanResource m_humanResource = null;
- private ConfigurationManager(){}
- public static HumanResource Get(string path)
- {
- if (m_humanResource == null)
- {
- FileStream fs = null;
- try
- {
- XmlSerializer xs =
- new XmlSerializer(typeof(HumanResource));
- fs = new FileStream(path,
- FileMode.Open, FileAccess.Read);
- m_humanResource = (HumanResource)xs.Deserialize(fs);
- fs.Close();
- return m_humanResource;
- }
- catch
- {
- if (fs != null)
- fs.Close();
- throw new Exception("Xml deserialization failed!");
- }
- }
- else
- {
- return m_humanResource;
- }
- }
- public static void Set(
- string path, HumanResource humanResource)
- {
- if (humanResource == null)
- throw new Exception("Parameter humanResource is null!");
- FileStream fs = null;
- try
- {
- XmlSerializer xs =
- new XmlSerializer(typeof(HumanResource));
- fs = new FileStream(
- path, FileMode.Create, FileAccess.Write);
- xs.Serialize(fs, humanResource);
- m_humanResource = null;
- fs.Close();
- }
- catch
- {
- if (fs != null)
- fs.Close();
- throw new Exception("Xml serialization failed!");
- }
- }
- }
XML序列化和反序列化实现的基本内容就向你介绍到这里,希望对你了解和学习XML序列化和反序列化的实现有所帮助。
- .NET对象的XML序列化和反序列化实例详解
- .NET对象的XML序列化和反序列化
- .NET对象的XML序列化和反序列化
- .NET对象的XML序列化和反序列化
- .NET对象的XML序列化和反序列化
- 利用.NET的XML序列化解决系统配置问题; .NET对象的XML序列化和反序列化
- C# 对象的xml序列化和反序列化
- 对象的Xml序列化和反序列化
- XmlSerializer 对象的Xml序列化和反序列化
- XmlSerializer 对象的Xml序列化和反序列化
- XmlSerializer 对象的Xml序列化和反序列化
- XmlSerializer 对象的Xml序列化和反序列化
- XmlSerializer 对象的Xml序列化和反序列化
- (转).NET对象的XML序列化和反序列化
- NET对象的XML序列化和反序列化(一)
- .NET 对象的序列化和反序列化
- 对象的序列化和反序列化详解
- xml序列化及反序列化.net对象
- 水如何拍
- C#如何修改电脑的默认打印机
- flex shareObject对象详解
- squid配置--转自linuxsir
- NetApp存储案例:光明日报社
- .NET对象的XML序列化和反序列化实例详解
- HASH JOIN
- FLEX实践—动态应用Validator验证多组数据
- VMware server 4.0 安装与使用教程
- Linux网络编程
- USB产品序列号获取方法
- POJ 1692 Crossed Matchings
- Convert HTML to Plain Text (把HTML文本转换成纯文本)
- 微软云计算定义:云+端、软件+服务