C#中可以用XmlDocument类操作Xml文件
例如要读取如下Xml文件
1 <root> 2 person name="WangYao"3 age>25</4 person5 ="Jobs"6 >567 8 >
程式如下
1 XmlDocument doc = new XmlDocument();
2 doc.Load("config.xml"); //加载Xml文件
3 XmlElement rootElem = doc.DocumentElement; 获取根节点 4 XmlNodeList personNodes = rootElem.GetElementsByTagName(person"); 获取person子节点集合 5 foreach (XmlNode node in personNodes)
6 {
7 string strName = ((XmlElement)node).GetAttribute(name"); 获取name属性值 8 Console.WriteLine(strName);
9 XmlNodeList subAgeNodes = ((XmlElement)node).GetElementsByTagName(age"); 获取age子XmlElement集合 10 if (subAgeNodes.Count == 1)
11 {
12 string strAge = subAgeNodes[0].InnerText;
13 Console.WriteLine(strAge);
14 }
15 }
其中XmlElement继承自XmlNode
XmlElement有GetAttribute()&GetElementsByTagName()等方法而XmlNode没有
不管使用XmlNode的ChildNodes属性还是XmlElement的GetElementsByTagName()方法获取的都是XmlNodeList
那这里就存在获取的XmlNodeList中的XmlNode到底是什么类型的问题
可以根据XmlNode的NodeType属性判断
如若等于XmlNodeType.Element就可以强转为XmlElement从而使用XmlElement的方法
转载:http://www.cnblogs.com/Hisin/archive/2012/02/27/2370646.html
- usingSystem;
- usingUnityEngine;
- usingSystem.IO;
- usingSystem.Xml;
- usingSystem.Linq;
- usingSystem.Text;
- usingSystem.Collections.Generic;
- namespaceAddress
- {
- ///<summary>
- ///地址数据
- ///</summary>
- publicclassAddressData
- {
- ///当前城市ID
- staticstring_nowProvinceId;
- ///所有省名字
- staticList<string>allProvinceName=newList<string>();
- ///所有城市id
- publicList<string>allCityId=///<summary>
- ///所有城市名字
- ///</summary>
- string>allCityName=string>();
- stringlocalUrl=Application.dataPath+"/XMLFile1.xml";
- ///加载xml文档
- ///<returns></returns>
- staticXmlDocumentReadAndLoadXml()
- XmlDocumentdoc=newXmlDocument();
- Debug.Log("加载xml文档");
- doc.Load(localUrl);
- returndoc;
- }
- ///从本地加载xml并获取所有省的名字
- ///<paramname="url"></param>
- string>GetAllProvinceName()
- List<string>_allProvinceName= XmlDocumentxmlDoc=ReadAndLoadXml();
- //所有province节点
- XmlNodeprovinces=xmlDoc.SelectSingleNode("province");
- foreach(XmlNodeprovinceinprovinces)
- XmlElement_province=(XmlElement)province;
- //所有provinceName添加到列表
- allProvinceName.Add(_province.GetAttribute("name"));
- }
- Debug.Log("所有省数目"+allProvinceName.Count);
- _allProvinceName=allProvinceName;
- return_allProvinceName;
- ///根据当前省ID返回当前省的所有城市名
- ///<paramname="nowProvinceId"></param>
- string>GetAllCityNameByNowProvinceId(stringnowProvinceId)
- List<string>nowAllCityName= XmlDocumentxmlDoc=ReadAndLoadXml();
- //所有province节点
- XmlNodeprovinces=xmlDoc.SelectSingleNode("province");
- inprovinces)
- XmlElement_province=(XmlElement)province;
- //当前城市id
- if(nowProvinceId==_province.GetAttribute("id"))
- foreach(XmlElementcityin_province.ChildNodes)
- XmlElement_city=(XmlElement)city;
- //当前城市的所有cityName添加到列表
- nowAllCityName.Add(_city.GetAttribute("name"));
- returnnowAllCityName;
- ///根据省的ID返回省的名字
- ///<paramname="provinceId"></param>
- ///<returns></returns>
- stringGetProvinceName(stringprovinceId)
- string_provinceName="";
- if(provinceId==_province.GetAttribute("id"))
- //获取实际省名
- _provinceName=_province.GetAttribute("name");
- return_provinceName;
- ///根据城市ID返会城市名字
- ///<paramname="cityId"></param>
- stringGetCityName(stringcityId)
- stringcityName="";
- if(_nowProvinceId==_province.GetAttribute("id"))
- in_province.ChildNodes)
- XmlElement_city=(XmlElement)city;
- if(cityId==_city.GetAttribute("id"))
- //获取实际城市名
- cityName=_city.GetAttribute("name");
- returncityName;
- }
copy