分享

Unity3D读取XML文档信息

 Steven书房 2014-02-25
  1. using System;  
  2. using UnityEngine;  
  3. using System.IO;  
  4. using System.Xml;  
  5. using System.Linq;  
  6. using System.Text;  
  7. using System.Collections.Generic;  
  8.   
  9.   
  10. namespace Address  
  11. {  
  12.     /// <summary>  
  13.     /// 地址数据  
  14.     /// </summary>  
  15.     public class AddressData  
  16.     {  
  17.          
  18.   
  19.           
  20.           
  21.   
  22.         /// <summary>  
  23.         ///当前城市ID  
  24.         /// </summary>  
  25.         public static string _nowProvinceId;  
  26.   
  27.   
  28.         /// <summary>  
  29.         /// 所有省名字  
  30.         /// </summary>  
  31.         public static List<string> allProvinceName = new List<string>();  
  32.   
  33.           
  34.         /// <summary>  
  35.         /// 所有城市id  
  36.         /// </summary>  
  37.         public List<string> allCityId = new List<string>();  
  38.   
  39.         ///<summary>  
  40.         ///所有城市名字  
  41.         ///</summary>  
  42.         public List<string> allCityName = new List<string>();  
  43.   
  44.         public static string localUrl = Application.dataPath + "/XMLFile1.xml";  
  45.   
  46.         /// <summary>  
  47.         /// 加载xml文档  
  48.         /// </summary>  
  49.         /// <returns></returns>  
  50.         public static  XmlDocument ReadAndLoadXml()  
  51.         {  
  52.             XmlDocument doc = new XmlDocument();  
  53.             Debug.Log("加载xml文档");  
  54.             doc.Load(localUrl);  
  55.             return doc;  
  56.   
  57.         }  
  58.   
  59.   
  60.   
  61.         /// <summary>  
  62.         /// 从本地加载xml并获取所有省的名字  
  63.         /// </summary>  
  64.         /// <param name="url"></param>  
  65.         /// <returns></returns>  
  66.         public static List<string> GetAllProvinceName()  
  67.         {  
  68.             List<string> _allProvinceName = new List<string>();  
  69.   
  70.             XmlDocument xmlDoc = ReadAndLoadXml();  
  71.   
  72.             //所有province节点  
  73.             XmlNode provinces = xmlDoc.SelectSingleNode("province");  
  74.   
  75.             foreach (XmlNode province in provinces)  
  76.             {  
  77.                 XmlElement _province = (XmlElement)province;  
  78.                   
  79.                 //所有provinceName添加到列表  
  80.                 allProvinceName.Add(_province.GetAttribute("name"));  
  81.                   
  82.             }  
  83.             Debug.Log("所有省数目"+allProvinceName.Count);  
  84.             _allProvinceName = allProvinceName;  
  85.   
  86.             return _allProvinceName;  
  87.         }  
  88.   
  89.         /// <summary>  
  90.         /// 根据当前省ID返回当前省的所有城市名  
  91.         /// </summary>  
  92.         /// <param name="nowProvinceId"></param>  
  93.         /// <returns></returns>  
  94.         public static List<string> GetAllCityNameByNowProvinceId(string nowProvinceId)  
  95.         {  
  96.   
  97.             List<string> nowAllCityName = new List<string>();  
  98.   
  99.             XmlDocument xmlDoc = ReadAndLoadXml();  
  100.   
  101.             //所有province节点  
  102.             XmlNode provinces = xmlDoc.SelectSingleNode("province");  
  103.   
  104.             foreach (XmlNode province in provinces)  
  105.             {  
  106.                 XmlElement _province = (XmlElement)province;  
  107.                   
  108.                 //当前城市id  
  109.                 if (nowProvinceId == _province.GetAttribute("id"))  
  110.                 {  
  111.                     foreach (XmlElement city in _province.ChildNodes)  
  112.                     {  
  113.                         XmlElement _city = (XmlElement)city;  
  114.                         //当前城市的所有cityName添加到列表  
  115.                         nowAllCityName.Add(_city.GetAttribute("name"));  
  116.                     }  
  117.                 }  
  118.   
  119.             }  
  120.   
  121.             return nowAllCityName;  
  122.         }  
  123.   
  124.         /// <summary>  
  125.         /// 根据省的ID返回省的名字  
  126.         /// </summary>  
  127.         /// <param name="provinceId"></param>  
  128.         /// <returns></returns>  
  129.         public static string GetProvinceName(string provinceId)  
  130.         {  
  131.             string _provinceName = "";  
  132.   
  133.             XmlDocument xmlDoc = ReadAndLoadXml();  
  134.   
  135.             //所有province节点  
  136.             XmlNode provinces = xmlDoc.SelectSingleNode("province");  
  137.   
  138.             foreach (XmlNode province in provinces)  
  139.             {  
  140.                 XmlElement _province = (XmlElement)province;  
  141.   
  142.   
  143.                 if (provinceId == _province.GetAttribute("id"))  
  144.                 {  
  145.                     //获取实际省名  
  146.                     _provinceName= _province.GetAttribute("name");  
  147.   
  148.                 }  
  149.             }  
  150.   
  151.   
  152.             return _provinceName;  
  153.         }  
  154.   
  155.         /// <summary>  
  156.         /// 根据城市ID返会城市名字  
  157.         /// </summary>  
  158.         /// <param name="cityId"></param>  
  159.         /// <returns></returns>  
  160.         public static string GetCityName(string cityId)  
  161.         {  
  162.             string cityName="";  
  163.   
  164.             XmlDocument xmlDoc = ReadAndLoadXml();  
  165.   
  166.             //所有province节点  
  167.             XmlNode provinces = xmlDoc.SelectSingleNode("province");  
  168.   
  169.             foreach (XmlNode province in provinces)  
  170.             {  
  171.                 XmlElement _province = (XmlElement)province;  
  172.   
  173.   
  174.                 if (_nowProvinceId == _province.GetAttribute("id"))  
  175.                 {  
  176.                     foreach (XmlElement city in _province.ChildNodes)  
  177.                     {  
  178.                         XmlElement _city = (XmlElement)city;  
  179.   
  180.                         if (cityId == _city.GetAttribute("id"))  
  181.                         {  
  182.                             //获取实际城市名  
  183.                             cityName = _city.GetAttribute("name");  
  184.                         }  
  185.                     }  
  186.   
  187.                 }  
  188.             }  
  189.             return cityName;  
  190.         }  
  191.     }  
  192.     
  193. }  
  1. using UnityEngine;  
  2.   
  3. using System.Collections;  
  4. using System.Collections.Generic;  
  5. using Address;  
  6.   
  7. public class FinalTest : MonoBehaviour {  
  8.   
  9.     // Use this for initialization  
  10.     void Start ()   
  11.     {  
  12.         List<string> allp = new List<string>();  
  13.         allp = AddressData.GetAllProvinceName();  
  14.           
  15.         Debug.Log(AddressData.allProvinceName.Count);  
  16.         Debug.Log(allp.Count);  
  17.   
  18.         List<string> allCity = new List<string>();  
  19.         allCity = AddressData.GetAllCityNameByNowProvinceId("01");  
  20.         Debug.Log(allCity.Count);  
  21.         for (int i = 0; i < allCity.Count; i++)  
  22.         {  
  23.             Debug.Log(allCity[i]);  
  24.         }  
  25.   
  26.         string a = AddressData.GetProvinceName("02");  
  27.         Debug.Log(a);  
  28.     }  
  29.   
  30.     // Update is called once per frame  
  31.     void Update()   
  32.     {  
  33.       
  34.     }  
  35. }  


  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <province>  
  3.   
  4.   <province id ="01" name="江苏">  
  5.     <city id ="01" name ="南京"></city>  
  6.     <city id ="02" name ="镇江"></city>  
  7.     <city id ="03" name ="南通"></city>  
  8.   </province>  
  9.   <province id ="02" name="河南">  
  10.     <city id ="01" name ="郑州"></city>  
  11.     <city id ="02" name ="开封"></city>  
  12.     <city id ="03" name ="洛阳"></city>  
  13.   </province>  
  14.     
  15.   
  16. </province>  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多