Unity3D读取XML文档信息
来源:互联网 发布:赤兔之死抄袭知乎 编辑:程序博客网 时间:2024/06/06 09:35
C#中可以用XmlDocument类操作Xml文件
例如要读取如下Xml文件
1 <root> 2 <person name="WangYao"> 3 <age>25</age> 4 </person> 5 <person name="Jobs"> 6 <age>56</age> 7 </person> 8 </root>
程式如下
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
Unity3D读取XML文档信息
- using System;
- using UnityEngine;
- using System.IO;
- using System.Xml;
- using System.Linq;
- using System.Text;
- using System.Collections.Generic;
- namespace Address
- {
- /// <summary>
- /// 地址数据
- /// </summary>
- public class AddressData
- {
- /// <summary>
- ///当前城市ID
- /// </summary>
- public static string _nowProvinceId;
- /// <summary>
- /// 所有省名字
- /// </summary>
- public static List<string> allProvinceName = new List<string>();
- /// <summary>
- /// 所有城市id
- /// </summary>
- public List<string> allCityId = new List<string>();
- ///<summary>
- ///所有城市名字
- ///</summary>
- public List<string> allCityName = new List<string>();
- public static string localUrl = Application.dataPath + "/XMLFile1.xml";
- /// <summary>
- /// 加载xml文档
- /// </summary>
- /// <returns></returns>
- public static XmlDocument ReadAndLoadXml()
- {
- XmlDocument doc = new XmlDocument();
- Debug.Log("加载xml文档");
- doc.Load(localUrl);
- return doc;
- }
- /// <summary>
- /// 从本地加载xml并获取所有省的名字
- /// </summary>
- /// <param name="url"></param>
- /// <returns></returns>
- public static List<string> GetAllProvinceName()
- {
- List<string> _allProvinceName = new List<string>();
- XmlDocument xmlDoc = ReadAndLoadXml();
- //所有province节点
- XmlNode provinces = xmlDoc.SelectSingleNode("province");
- foreach (XmlNode province in provinces)
- {
- XmlElement _province = (XmlElement)province;
- //所有provinceName添加到列表
- allProvinceName.Add(_province.GetAttribute("name"));
- }
- Debug.Log("所有省数目"+allProvinceName.Count);
- _allProvinceName = allProvinceName;
- return _allProvinceName;
- }
- /// <summary>
- /// 根据当前省ID返回当前省的所有城市名
- /// </summary>
- /// <param name="nowProvinceId"></param>
- /// <returns></returns>
- public static List<string> GetAllCityNameByNowProvinceId(string nowProvinceId)
- {
- List<string> nowAllCityName = new List<string>();
- XmlDocument xmlDoc = ReadAndLoadXml();
- //所有province节点
- XmlNode provinces = xmlDoc.SelectSingleNode("province");
- foreach (XmlNode province in provinces)
- {
- XmlElement _province = (XmlElement)province;
- //当前城市id
- if (nowProvinceId == _province.GetAttribute("id"))
- {
- foreach (XmlElement city in _province.ChildNodes)
- {
- XmlElement _city = (XmlElement)city;
- //当前城市的所有cityName添加到列表
- nowAllCityName.Add(_city.GetAttribute("name"));
- }
- }
- }
- return nowAllCityName;
- }
- /// <summary>
- /// 根据省的ID返回省的名字
- /// </summary>
- /// <param name="provinceId"></param>
- /// <returns></returns>
- public static string GetProvinceName(string provinceId)
- {
- string _provinceName = "";
- XmlDocument xmlDoc = ReadAndLoadXml();
- //所有province节点
- XmlNode provinces = xmlDoc.SelectSingleNode("province");
- foreach (XmlNode province in provinces)
- {
- XmlElement _province = (XmlElement)province;
- if (provinceId == _province.GetAttribute("id"))
- {
- //获取实际省名
- _provinceName= _province.GetAttribute("name");
- }
- }
- return _provinceName;
- }
- /// <summary>
- /// 根据城市ID返会城市名字
- /// </summary>
- /// <param name="cityId"></param>
- /// <returns></returns>
- public static string GetCityName(string cityId)
- {
- string cityName="";
- XmlDocument xmlDoc = ReadAndLoadXml();
- //所有province节点
- XmlNode provinces = xmlDoc.SelectSingleNode("province");
- foreach (XmlNode province in provinces)
- {
- XmlElement _province = (XmlElement)province;
- if (_nowProvinceId == _province.GetAttribute("id"))
- {
- foreach (XmlElement city in _province.ChildNodes)
- {
- XmlElement _city = (XmlElement)city;
- if (cityId == _city.GetAttribute("id"))
- {
- //获取实际城市名
- cityName = _city.GetAttribute("name");
- }
- }
- }
- }
- return cityName;
- }
- }
- }
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
- using Address;
- public class FinalTest : MonoBehaviour {
- // Use this for initialization
- void Start ()
- {
- List<string> allp = new List<string>();
- allp = AddressData.GetAllProvinceName();
- Debug.Log(AddressData.allProvinceName.Count);
- Debug.Log(allp.Count);
- List<string> allCity = new List<string>();
- allCity = AddressData.GetAllCityNameByNowProvinceId("01");
- Debug.Log(allCity.Count);
- for (int i = 0; i < allCity.Count; i++)
- {
- Debug.Log(allCity[i]);
- }
- string a = AddressData.GetProvinceName("02");
- Debug.Log(a);
- }
- // Update is called once per frame
- void Update()
- {
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <province>
- <province id ="01" name="江苏">
- <city id ="01" name ="南京"></city>
- <city id ="02" name ="镇江"></city>
- <city id ="03" name ="南通"></city>
- </province>
- <province id ="02" name="河南">
- <city id ="01" name ="郑州"></city>
- <city id ="02" name ="开封"></city>
- <city id ="03" name ="洛阳"></city>
- </province>
- </province>
0 0
- Unity3D读取XML文档信息
- Unity3D读取XML文档信息
- Unity3D读取XML文档信息
- unity3D读取XML文档信息
- Unity3D读取XML文档信息实例
- 读取xml文档中的信息
- 读取XML文档解析信息
- 根据XML文档读取连接数据库信息
- unity3d读取XML配置文件
- Unity3d 新建xml 读取xml
- C# 读取XML文档
- 客户端读取Xml文档
- C#读取XML文档
- 读取xml文档
- C# 读取XML文档
- 读取XML文档
- js 读取xml文档
- 读取XML文档
- Unity3d_UGUI虚拟摇杆(简易)
- 关闭程序立即重启出现Address already in use
- LeetCode_57---Insert Interval
- 11个超棒的iOS开发学习网站
- A new starting ...
- Unity3D读取XML文档信息
- Office Tips 3 - 如何设置电脑屏幕背景色为淡绿色
- android 一个很漂亮的控件ObservableScrollView(含片段代码和源码)
- 让Struts2.3.24支持JDK1.5
- “标准”宏与函数模板
- 《C#程序设计》第四次作业
- 待学习与研究
- 复杂表达式解释器 c语言复杂指针定义在线解释 正则在线解释
- Android导入现有的数据库