背景: 在开发 ASP.NETMVC4 项目中, 虽然 web.config 配置满足了大部分需求, 不过对于某些特定业务, 我们有时候需要添加新的配置文件来记录配置信息, 那么 XML 文件配置无疑是我们选择的一个方案之一。下面简单谈谈 XML 的读取.
一. xml.linq 读取 xml
1. 新建一个 data.XML 文件
- 1 <Customers>
- 2 <Customer>
- 3 <Name>Frank</Name>
- 4 <City>成都</City>
- 5 <Contact>2233</Contact>
- 6 </Customer>
- 7 <Customer>
- 8 <Name>Vincent</Name>
- 9 <City>美国</City>
- 10 <Contact>4455</Contact>
- 11 </Customer>
- 12 </Customers>
2. 新建 customer 实体
- 1 public class Customers 2 {
- 3 public string Name {
- get;
- set;
- }
- 4 5 public string City {
- get;
- set;
- }
- 6 7 public string Contact {
- get;
- set;
- }
- 8
- }
3. System.Xml.Linq 域名. 就可以轻松将 customer 信息读取完毕。XDocument.Load 读取 xml 文件. Descendants 可以读取 Customer 节点返回一个集合. 再通过 Linq 的 select 方法. 读取每个 Customer 节点数据, 转换成 List<Customer> 对象
- 1 var customsers = XDocument.Load("data.xml").Descendants("Customer")
- 2 .Select(x => new Customers()
- 3 {
- 4 Name = x.Element("Name").Value,
- 5 City = x.Element("City").Value,
- 6 Contact = x.Element("Contact").Value,
- 7 }).ToList();
二. 简单的 ORM
上面介绍了 XML 的读取, 那 XML 读取有没有可以更简单的方式呢. 比如类似于 Database 的 ORM 框架. 只需要实体名称与 DB SQL 的 select 字段名称一样就会自动映射到实体上面。不需要我们去写代码一个一个去 Element 上取。 下面我们就来简单实现一个。下面代码只是提供思路
其实我们可以通过反射和打标签来实现, 大家有空不妨去看看小弟写得两篇 打标签和反射的文章。
1. 新建 XmlAttribute 类。提供了 ElementName 属性用于标记实体类字段对应的 xml 节点
- 1 public class XmlAttribute : Attribute
- 2 {
- 3 public string ElementName
- 4 {
- 5 get;
- 6 set;
- 7 }
- 8 }
2. 修改新建的 Customler 类. ElementName 对应的 xml 节点名称, 因为有可能开发者 xml 节点名称和实体名称不一样。
- 1 public class Customers
- 2 {
- 3
- 4 [Xml(ElementName = "Name")]
- 5
- 6 public string Name { get; set; }
- 7
- 8 [Xml(ElementName = "City")]
- 9
- 10 public string City { get; set; }
- 11
- 12 [Xml(ElementName = "Contact")]
- 13
- 14 public string Contact { get; set; }
- 15 }
3. 提供 XmlReader 类, 用于读取 xml 数据
1. 先通过反射读取实体, 比如 Customer 类的 字段名称和对应的 xml 节点名称存入到 dic 字典里面.
2. 遍历字段,取值赋给实体
4. 下面看看结果吧, 轻松读取数据了
三. 总结
本篇只是简简单单的谈了一下 XML 读取, xml 的类型很多, 比如在
更多 C# 基础笔记,请点击下面链接:
来源: http://www.cnblogs.com/FourLeafCloverZc/p/6565589.html