您的位置:首页 > 移动开发 > Unity3D

Unity3D读取XML文档信息实例

2015-01-26 16:35 363 查看

Unity3D读取XML文档信息
分类:
Unity3D
XML
C# 2013-07-11 11:00
5327人阅读 评论(0)收藏
举报
Unity3DXML

[csharp]
view plaincopyprint?

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 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;
}
}

}


[csharp]
view plaincopyprint?

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()
{

}
}

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()
{

}
}


[html]
view plaincopyprint?

<?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>
<?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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: