Unity3D读取XML文档信息

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


Unity3D读取XML文档信息

[csharp] view plain copy
  1. usingSystem;@H_502_188@
  2. usingUnityEngine;@H_502_188@
  3. usingSystem.IO;@H_502_188@
  4. usingSystem.Xml;@H_502_188@
  5. usingSystem.Linq;@H_502_188@
  6. usingSystem.Text;@H_502_188@
  7. usingSystem.Collections.Generic;@H_502_188@
  8. @H_502_188@
  9. @H_502_188@
  10. namespaceAddress@H_502_188@
  11. {@H_502_188@
  12. ///<summary>@H_502_188@
  13. ///地址数据@H_502_188@
  14. ///</summary>@H_502_188@
  15. publicclassAddressData@H_502_188@
  16. {@H_502_188@
  17. ///当前城市ID@H_502_188@
  18. staticstring_NowProvinceId;@H_502_188@
  19. ///所有省名字@H_502_188@
  20. staticList<string>allProvinceName=newList<string>();@H_502_188@
  21. ///所有城市id@H_502_188@
  22. publicList<string>allCityId=///<summary>@H_502_188@
  23. ///所有城市名字@H_502_188@
  24. ///</summary>@H_502_188@
  25. string>allCityName=string>();@H_502_188@
  26. stringlocalUrl=Application.dataPath+"/XMLFile1.xml";@H_502_188@
  27. ///加载xml文档@H_502_188@
  28. ///<returns></returns>@H_502_188@
  29. staticXmlDocumentReadAndLoadXml()@H_502_188@
  30. XmlDocumentdoc=newXmlDocument();@H_502_188@
  31. Debug.Log("加载xml文档");@H_502_188@
  32. doc.Load(localUrl);@H_502_188@
  33. returndoc;@H_502_188@
  34. }@H_502_188@
  35. ///从本地加载xml并获取所有省的名字@H_502_188@
  36. ///<paramname="url"></param>@H_502_188@
  37. string>GetAllProvinceName()@H_502_188@
  38. List<string>_allProvinceName= XmlDocumentxmlDoc=ReadAndLoadXml();@H_502_188@
  39. //所有province节点@H_502_188@
  40. XmlNodeprovinces=xmlDoc.SelectSingleNode("province");@H_502_188@
  41. foreach(XmlNodeprovinceinprovinces)@H_502_188@
  42. XmlElement_province=(XmlElement)province;@H_502_188@
  43. //所有provinceName添加到列表@H_502_188@
  44. allProvinceName.Add(_province.GetAttribute("name"));@H_502_188@
  45. }@H_502_188@
  46. Debug.Log("所有省数目"+allProvinceName.Count);@H_502_188@
  47. _allProvinceName=allProvinceName;@H_502_188@
  48. return_allProvinceName;@H_502_188@
  49. ///根据当前省ID返回当前省的所有城市名@H_502_188@
  50. ///<paramname="NowProvinceId"></param>@H_502_188@
  51. string>GetAllCityNameByNowProvinceId(stringNowProvinceId)@H_502_188@
  52. List<string>NowAllCityName= XmlDocumentxmlDoc=ReadAndLoadXml();@H_502_188@
  53. //所有province节点@H_502_188@
  54. XmlNodeprovinces=xmlDoc.SelectSingleNode("province");@H_502_188@
  55. inprovinces)@H_502_188@
  56. XmlElement_province=(XmlElement)province;@H_502_188@
  57. //当前城市id@H_502_188@
  58. if(NowProvinceId==_province.GetAttribute("id"))@H_502_188@
  59. foreach(XmlElementcityin_province.ChildNodes)@H_502_188@
  60. XmlElement_city=(XmlElement)city;@H_502_188@
  61. //当前城市的所有cityName添加到列表@H_502_188@
  62. NowAllCityName.Add(_city.GetAttribute("name"));@H_502_188@
  63. returnNowAllCityName;@H_502_188@
  64. ///根据省的ID返回省的名字@H_502_188@
  65. ///<paramname="provinceId"></param>@H_502_188@
  66. ///<returns></returns>@H_502_188@
  67. stringGetProvinceName(stringprovinceId)@H_502_188@
  68. string_provinceName="";@H_502_188@
  69. if(provinceId==_province.GetAttribute("id"))@H_502_188@
  70. //获取实际省名@H_502_188@
  71. _provinceName=_province.GetAttribute("name");@H_502_188@
  72. return_provinceName;@H_502_188@
  73. ///根据城市ID返会城市名字@H_502_188@
  74. ///<paramname="cityId"></param>@H_502_188@
  75. stringGetCityName(stringcityId)@H_502_188@
  76. stringcityName="";@H_502_188@
  77. if(_NowProvinceId==_province.GetAttribute("id"))@H_502_188@
  78. in_province.ChildNodes)@H_502_188@
  79. XmlElement_city=(XmlElement)city;@H_502_188@
  80. if(cityId==_city.GetAttribute("id"))@H_502_188@
  81. //获取实际城市名@H_502_188@
  82. cityName=_city.GetAttribute("name");@H_502_188@
  83. returncityName;@H_502_188@
  84. }@H_502_188@


copy
    usingUnityEngine;@H_502_188@
  1. usingSystem.Collections;@H_502_188@
  2. usingSystem.Collections.Generic;@H_502_188@
  3. usingAddress;@H_502_188@
  4. classFinalTest:MonoBehavIoUr{@H_502_188@
  5. //Usethisforinitialization@H_502_188@
  6. voidStart()@H_502_188@
  7. string>allp= allp=AddressData.GetAllProvinceName();@H_502_188@
  8. Debug.Log(AddressData.allProvinceName.Count);@H_502_188@
  9. Debug.Log(allp.Count);@H_502_188@
  10. string>allCity= allCity=AddressData.GetAllCityNameByNowProvinceId("01");@H_502_188@
  11. Debug.Log(allCity.Count);@H_502_188@
  12. for(inti=0;i<allCity.Count;i++)@H_502_188@
  13. Debug.Log(allCity[i]);@H_502_188@
  14. stringa=AddressData.GetProvinceName("02");@H_502_188@
  15. Debug.Log(a);@H_502_188@
  16. //Updateiscalledonceperframe@H_502_188@
  17. voidUpdate()@H_502_188@
  18. }@H_502_188@


[html] copy
    <?xmlversion="1.0"encoding="utf-8"?>@H_502_188@
  1. <province>@H_502_188@
  2. provinceid="01"name="江苏"cityid="01"name="南京"></city>@H_502_188@
  3. cityid="02"name="镇江"cityid="03"name="南通"provinceid="02"name="河南"cityid="01"name="郑州"cityid="02"name="开封"cityid="03"name="洛阳">@H_502_188@
转载:http://blog.csdn.net/awnuxcvbn/article/details/9298395

相关文章

前言 本文记录unity3D开发环境的搭建 unity安装 unity有中文...
前言 有时候我们希望公告牌跟随镜头旋转永远平行面向屏幕,同...
前言 经过一段时间的学习与实际开发,unity3D也勉强算是强行...
前言 在unity中我们常用的获取鼠标点击的方法有: 1、在3D场...
前言 在之前的例子中,我们都没有用到unity的精髓,例如地形...
这篇文章将为大家详细讲解有关Unity3D中如何通过Animator动画...