码迷,mamicode.com
首页 > 其他好文 > 详细

XML序列化器读取XML数据

时间:2014-05-24 10:18:44      阅读:327      评论:0      收藏:0      [点我收藏+]

标签:des   style   class   blog   c   code   

PS:标题我还真的不知道该怎么取比较好,大家将就下吧^_^

场景:上周接到一个任务,要求我把ASP写的会员充值功能,用ASP.NET复制一遍,没有给我需求文档,就是让我根据代码去分析业务逻辑,然后看到一个IP识别功能,就是判断该会员卡是否可以在该IP段内使用,看着一大片的用if then 写的IP地址判断,我就蛋疼了。。。。

      我就一直琢磨该怎么优化代码,开始用逗号去分割,然后把IP地址写在web.config中,但是太多了,然后请教同事,同事说可以用XML配置(web.config虽然也是XML,但是不在web.config中),然后用序列化读取。

     废话了那么多,下面让我们开始吧!

    1、根据需求创建一个XML文件,命名IPPackage

  

bubuko.com,布布扣
<?xml version="1.0" encoding="utf-8" ?>
<Root>
  <city>
    <!--城市标志-->
    <flag>SX</flag>
    <!--IP段-->
    <ip>
      <start>11.1.0.0</start>
      <end>11.1.25.255</end>
    </ip>
    <ip>
      <start>11.2.0.0</start>
      <end>11.3.25.255</end>
    </ip>
  </city>
  <city>
    <!--城市标志-->
    <flag>NX</flag>
    <!--IP段-->
    <ip>
      <start>11.1.0.0</start>
      <end>11.1.25.255</end>
    </ip>
    <ip>
      <start>11.2.0.0</start>
      <end>11.3.25.255</end>
    </ip>
  </city>
</Root>
bubuko.com,布布扣

2、创建一个IP类,然后用特性标识,如果你的类名称和字段名称与XML中的节点名称一样则不需要用特性标识

bubuko.com,布布扣
bubuko.com,布布扣
 1 /// <summary>
 2     /// IP段
 3     /// </summary>
 4     public class IP
 5     {
 6         /// <summary>
 7         /// [XmlElement(ElementName = "start")]用于标识IP节点中的start节点
 8         /// </summary>
 9         [XmlElement(ElementName = "start")]
10         public String StartIP { get; set; }
11 
12         /// <summary>
13         /// [XmlElement(ElementName = "start")]用于标识IP节点中的end节点
14         /// </summary>
15         [XmlElement(ElementName = "end")]
16         public String EndIP { get; set; }
17     }
IP类,对应XML中的IP节点
bubuko.com,布布扣

3、创建一个CityIPList类

bubuko.com,布布扣
bubuko.com,布布扣
 1     /// <summary>
 2     /// 城市IP集合
 3     /// </summary>
 4     public class CtiyIPList
 5     {
 6         [XmlElement(ElementName = "flag")]
 7         public String CityFlag { get; set; }
 8 
 9         [XmlElement(ElementName = "ip")]
10         public List<IP> IPList { get; set; }
11     }
CityIPList类
bubuko.com,布布扣

4、创建一个Root类

bubuko.com,布布扣
bubuko.com,布布扣
 1     /// <summary>
 2     /// 整个XMLIP数据
 3     /// </summary>
 4     public class Root
 5     {
 6         /// <summary>
 7         /// [XmlElement(ElementName = "city")]用于标识XML city节点
 8         /// </summary>
 9         [XmlElement(ElementName = "city")]
10         public List<CtiyIPList> All { get; set; } 
11     }
Root类,类名与XML根节点名称一样
bubuko.com,布布扣

5、读取数据

bubuko.com,布布扣
bubuko.com,布布扣
1 //xml路径
2             string filePath = @"E:\WorkDocument\ConsoleApplication1\ConsoleApplication1\IPPackage.xml";
3             //读取文件
4             FileStream stream = new FileStream(filePath, FileMode.Open);
5             //序列化读取XML数据
6             XmlSerializer serializer = new XmlSerializer(typeof(Root));
7             Root list = (Root)serializer.Deserialize(stream);
8             stream.Close();
读取XML方法体
bubuko.com,布布扣

DEMO地址:链接: http://pan.baidu.com/s/1kTkKwb9 密码: obks

现在写下来,与大家共勉!

XML序列化器读取XML数据,布布扣,bubuko.com

XML序列化器读取XML数据

标签:des   style   class   blog   c   code   

原文地址:http://www.cnblogs.com/ganqiyin/p/3748422.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!