XML序列化器读取XML数据
PS:标题我还真的不知道该怎么取比较好,大家将就下吧^_^
场景:上周接到一个任务,要求我把ASP写的会员充值功能,用ASP.NET复制一遍,没有给我需求文档,就是让我根据代码去分析业务逻辑,然后看到一个IP识别功能,就是判断该会员卡是否可以在该IP段内使用,看着一大片的用if then 写的IP地址判断,我就蛋疼了。。。。
我就一直琢磨该怎么优化代码,开始用逗号去分割,然后把IP地址写在web.config中,但是太多了,然后请教同事,同事说可以用XML配置(web.config虽然也是XML,但是不在web.config中),然后用序列化读取。
废话了那么多,下面让我们开始吧!
1、根据需求创建一个XML文件,命名IPPackage
<?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>
2、创建一个IP类,然后用特性标识,如果你的类名称和字段名称与XML中的节点名称一样则不需要用特性标识
/// <summary>
/// IP段
/// </summary>
public class IP
{
/// <summary>
/// [XmlElement(ElementName = "start")]用于标识IP节点中的start节点
/// </summary>
[XmlElement(ElementName = "start")]
public String StartIP { get; set; } /// <summary>
/// [XmlElement(ElementName = "start")]用于标识IP节点中的end节点
/// </summary>
[XmlElement(ElementName = "end")]
public String EndIP { get; set; }
}
IP类,对应XML中的IP节点
3、创建一个CityIPList类
/// <summary>
/// 城市IP集合
/// </summary>
public class CtiyIPList
{
[XmlElement(ElementName = "flag")]
public String CityFlag { get; set; } [XmlElement(ElementName = "ip")]
public List<IP> IPList { get; set; }
}
CityIPList类
4、创建一个Root类
/// <summary>
/// 整个XMLIP数据
/// </summary>
public class Root
{
/// <summary>
/// [XmlElement(ElementName = "city")]用于标识XML city节点
/// </summary>
[XmlElement(ElementName = "city")]
public List<CtiyIPList> All { get; set; }
}
Root类,类名与XML根节点名称一样
5、读取数据
//xml路径
string filePath = @"E:\WorkDocument\ConsoleApplication1\ConsoleApplication1\IPPackage.xml";
//读取文件
FileStream stream = new FileStream(filePath, FileMode.Open);
//序列化读取XML数据
XmlSerializer serializer = new XmlSerializer(typeof(Root));
Root list = (Root)serializer.Deserialize(stream);
stream.Close();
读取XML方法体
DEMO地址:链接: http://pan.baidu.com/s/1kTkKwb9 密码: obks
现在写下来,与大家共勉!
XML序列化器读取XML数据的更多相关文章
- 使用XMl序列化器生成xml文件
生成XML文件 创建几个虚拟的短信对象,存在list中 备份数据通常都是备份至sd卡 使用StringBuffer拼接字符串 把整个xml文件所有节点append到sb对象里 sb.append(&q ...
- 使用XML序列化器生成XML文件和利用pull解析XML文件
首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message&g ...
- Android 使用xml序列化器生成xml文件
在<Android 生成xml文件>一文中使用流的形式写入xml格式文件,但是存在一定的问题,那就是在短信内容中不能出现<>之类的括号,本文使用xml序列化器来解决 xml序列 ...
- .NET 二进制序列化器,SOAP序列化器,XML序列化器
这里就不说JSON序列化了,只介绍三种:二进制序列化器,SOAP序列化器,XML序列化器 直接上代码: /// <summary> /// 二进制序列化器. /// 最节省流量,压缩程度最 ...
- IOSerialize,xml和json,soap序列化器,二进制序列化器,XML序列化器,文件 检查、新增、复制、移动、删除
1 文件夹/文件 检查.新增.复制.移动.删除,2 文件读写,记录文本日志/读取配置文件3 三种序列化器4 xml和json1.文件夹/文件 检查.新增.复制.移动.删除,2 文件读写,记录文本日志/ ...
- xml生成方式二(Xml序列化器XmlSerializer)
一.andoirdAPI提供了xml生成和解析的API: XmlSerializer xs = Xml.newSerializer();和XmlPullParser xmlPullParser = X ...
- [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类
[.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...
- 使用java自带的xml解析器解析xml
使用java自带的xml解析器解析xml,其实我不推荐,可以用Dom解析,或其他的方式,因为Java自带的解析器使用不但麻烦,且还有bug出现. 它要求,针对不同的xml(结构不同),必须写对应的ha ...
- 使用Pull解析器生成XML文件和读取xml文件
有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使 ...
随机推荐
- Oracle 差异性增量 和 累计增量 原理(转)
RMAN一个强大的功能是支持增量备份,增量备份中心思想就是减少备份的数据量,我们不需要在从头开始备份了,只需要备份自上次已备份之后的数据块即可. Oracle 9i 共有五种级别 0 1 2 3 ...
- 嵌入式:UCOSIII的使用(17.01.24补充)
0.一些移植.系统相关 OS_CFG_APP.H /* --------------------- MISCELLANEOUS ------------------ */ #define OS_CFG ...
- 解决model属性与系统重名
.h .m + (NSDictionary *)replacedKeyFromPropertyName { return @{ @"detailId" : @"id&qu ...
- Hibernate知识点小结(四)--JPA
一.jpa的简介和入门 JPA:Java Persistence API,接口规范 Hinernate内部为JPA规范提供实现 开发步骤(EntityManager): ...
- Hibernate知识点小结(一)--快速入门
一.Hibernate的简介 1.Hibernate是一个开放源代码的对象关系映射框架 2.对象关系映射:ORM Object Relation Mapping 对象与数据 ...
- SQL Server中的三种Join方式
1.测试数据准备 参考:Sql Server中的表访问方式Table Scan, Index Scan, Index Seek 这篇博客中的实验数据准备.这两篇博客使用了相同的实验数据. 2.SQ ...
- ansible-palybook剧本
1 ansible基础知识部分补充 1.1 ansible软件特点: · 可以实现批量管理 · 可以实现批量部署 · ad-hoc(批量执行命令)---针对临时性的操作 ansible clsn -m ...
- go 下面定义嵌套结构
package main import ( "fmt" ) const ( URL = "http://www.163.com" UID = "adm ...
- 在Liunx Mint下无法切换到root用户
提示 su: Authentication failure 以ubuntu的mint root用户默认是也是禁止的 需要手动打开才行 a)root启用 执行下面的操作:1.先解除root锁定,为roo ...
- 用C#实现WEB代理服务器
用C#实现Web代理服务器 代理服务程序是一种广泛使用的网络应用程序.代理程序的种类非常多,根据协议不同可以分成HTTP代理服务程序.FTP代理服务程序等,而运行代理服务程序的服务器也就相应称为HTT ...