C# 解析XML文件

本文以解析全国省份、(市/区)、县为例(就是淘宝填写地址的选项)

我在这里使用 XmlDocument 通过 using System.Xml 命名空间


XmlDocument xml=new XmlDocument();//先实例化 XmlDocument

xml.Load(path);//path可以为相对路径或者为绝对路径

XmlNodeList province=xml.DocumentElement.ChildNodes;//下面图片中的<root>.......</root>中的root是根节点,<province>.......</province>中province是root子节点

//如果要迭代 first 当使用 foreach 时 要在前面给定元素的类型即是 XmlElement 类型


foreach (XmlElement province in provinces){
	Console.WriteLine(province.GetAttribute("name"));//获取 province name="北京"  的北京,如果里面有其他的属性如age="23",sex="男",你可以使用province.GetAttribute("age")和province.GetAttribute("sex")
}

//如果这个节点下面还有节点你可以


foreach (XmlElement province in provinces){
	XmlNodeList citys=province.ChildNodes;//获取这个节点下面的子节点
}

下面是我的代码


public static Dictionary<string,Dictionary<string,List<string>>> ReadAddress(string path) {
	XmlDocument xml=new XmlDocument();
	xml.Load(path);
	XmlNodeList provinces=xml.DocumentElement.ChildNodes;//获取XML的根节点--省份
	Dictionary<string,Dictionary<string,List<string>>> rprovince=new Dictionary<string, Dictionary<string, List<string>>>();
	foreach (XmlElement province in provinces) {//对省份进行迭代
		Dictionary<string,List<string>> rcity=new Dictionary<string,List<string>>();
		XmlNodeList citys=province.ChildNodes;//获取当前省份下面的(市/区)的节点
		foreach (XmlElement city in citys) {//对(市/区)进行迭代
			List<string> rdistrict=new List<string>();
			XmlNodeList districts=city.ChildNodes;//获取当前(市/区)下面的县节点
			foreach (XmlElement district in districts) {//对县进行迭代
				rdistrict.Add(district.GetAttribute("name"));
			}
			rcity.Add(city.GetAttribute("name"),rdistrict);
		}
		rprovince.Add(province.GetAttribute("name"),rcity);
	}
	return rprovince;
}

我解析的XML文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值