在 .net 中使用 XmlDocument 对 xml 进行读取和保存,就好象使用使用 ADO.NET 访问数据库一样需要编写大量的繁琐代码,现在开发数据库程序基本上都使用ORM 框架简化工作,同样也可以类似的使用反射机制将 XML 配置文件转化为相应的 对象,使用的使用直接调用对象就可以。
下面根据一个简单的实例说明下思路
<?xml version="1.0" encoding="utf-8"?>
<root>
<templates>
<template id="100" name="模板1">
<header fontname="宋体" fontsize="14" align="Left" content=""/>
</template>
<template id="100">
<header fontname="宋体" fontsize="14" align="Left" content=""/>
</template>
</templates>
</root>
上面是一个简单配置文件,根据这个XML的结构编写下面的相应对象
[XmlFile("XXTemplate.xml", "root", "配置文件的名称")]
public class XXTemplate
{
[XmlCollection(typeof(List<XXTemplateItem>), typeof(XXTemplateItem), "templates", "")]
public List<XXTemplateItem> Templates { get; set; }
}
[XmlItem(typeof(PrintTemplateItem), "template", "")]
public class XXTemplateItem
{
[XmlProperty("id", typeof(string), "")]
public string Id {get;set;}
[XmlProperty("name", typeof(string), "")]
public string Name {get;set;}
[XmlItem(typeof(XXTemplateItemHeader), "header", "")]
public XXTemplateItemHeader Header { get; set; }
}
[XmlItem(typeof(XXTemplateItemHeader), "header", "")]
public class XXTemplateItemHeader
{
[XmlProperty("fontname", typeof(string), "")]
public string Fontname {get;set;}
}
这样就在 XML 和对象之间建立了映射,最后创建一个通用的 映射管理类 负责读取XML 文档转化为 对象 和 在修改对象后将状态保存到XML文档中。
在这个处理过程中,主要是使用到了 .net 的 反射机制 (Reflection) 和 属性(Attribute)