利用XML序列化实现程序配置文件
来源: 阅读:628 次 日期:2015-02-27 10:46:47
温馨提示: 小编为您整理了“利用XML序列化实现程序配置文件”,方便广大网友查阅!

有些应用程序在退出的时候,会将一些设置值写入到文件里,以便下次程序启动时调用,这个文件统称为配置文件。例如:Windows的扫雷程序,在每次启动的时候,都会出现在上次关闭的位置,就是因为扫雷程序在退出的时候将当前位置写入到配置文件里。

早期的配置文件的实现有两种方法。一是INI文件,在Win32的API中还专门有读写INI文件的API函数;另一个是注册表,这也是很多程序的首选,在版本较新的扫雷程序就是利用注册表实现配置函数。不过,上述的两种方法都有其的局限性。INI文件,结构简单,容易编辑,有容量的上限(64K)。注册表虽然没有容量的限制,不过读写注册表还是一件很麻烦的事,而且还容易在注册表中产生冗余(删除程序的时候还得操作注册表),也有和其他程序想冲的可能。最主要的问题就是,无论是INI文件还是注册表都只能实现简单的配置读写,很难实现类似对象的读写,因为他们的条目之间是平行的,而不是类似树状的节点结构(注册表虽能实现树状结构,但是读写还是比较麻烦,也不太安全)。

而利用XML文件就能很好的弥补上面的不足。首先是文件型的,不会读写注册表,不会有安全的后顾之忧;其次没有文件容量大小的限制,而且XML文件天生是树状结构,很适合实现对象的读写。目前XML文件的应用越来越广泛,已经成为主流,你随便打开一个程序所在的目录,很少不看到XML文件的,而且主流的开发软件都有读写XML的库文件。操作XML文件现在是很便利的一件事。

XML文件序列化是XML技术的一个分支,他可以把程序中的一个对象(例如自己编写的类的一个实例)序列化成XML文件。他也可以把XML文件反序列化为程序中的一个对象。

有关XML序列化比较好的文章,我个人感觉下面这篇比较好。

NET对象的XML序列化和反序列化

这就给了我们的一个思路,我们可以把要读写的配置封装在自己编写的配置类中,然后通过XML序列化,来实现配置类和XML文件的转化。

例如:下面这个例子就是利用XML序列化在类对象和XML之间转换,用的是C#

下面例子中的xml schema 描述了一个简单的人力资源信息,其中包含了xml的大部分格式,如xml 元素相互嵌套, xml元素既有元素值,又有属性值。

1. 待序列化的类层次结构

[XmlRoot("humanResource")]public class HumanResource

{

private int m_record = 0;

private Worker[] m_workers = null;

[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

{

private string m_number = null;

private InformationItem[] m_infoItems = null;

[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

{

private string m_name = null;

private string m_value = null;

[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; }

}

}

2. 序列化生成的xml结构

<?xml version="1.0" ?>

<humanResource xmlns:xsi="" xmlns:xsd="" 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>

更多信息请查看IT技术专栏

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map