保存省市区数据文件的形式可以是文本文件、XML文件、JSON文件等。其中,文本文件的格式比较简单,容易处理,但是不太方便跨平台传输;XML文件适合结构比较复杂的数据类型,但是文件比较大;JSON文件则是一种轻量级的数据格式,适合于简单的数据类型。
当然,如果你的应用程序或者网站中需要提供实时的省市区数据,则可以考虑将数据存储在数据库中,并提供相应的接口供程序或者网站访问。这样做的好处是能够避免数据冗余,提供更加灵活和高效的数据 *** 作方式。
<national><province name="河北省">
<city name="石家庄市">
<county name="XX县" />
<county name="XX县" />
<county name="XX县" />
</city>
<city name="保定市">
<county name="XX县" />
<county name="XX县" />
</city>
</province>
<province name="山东省">
<city name="济南市">
<county name="XX县" />
<county name="XX县" />
<county name="XX县" />
</city>
<city name="青岛市">
<county name="XX县" />
<county name="XX县" />
</city>
</province>
</national>
省 市 县 三级下拉框联动,第一个下拉框填充省,第二个填充市,第三个填充县,当选择省时,第二个下拉框根据所选择的省在xml文件里查询出当前省所属的市,默认选择第一个市,第三个下拉框填充当前市所属的县。
取xml节点的方法:
XmlDocument xmlDoc = new XmlDocument()
xmlDoc.Load(strXmlPath)//加载xml
XmlNode xn = xmlDoc.SelectSingleNode(strSingNode)//选择节点
XmlNodeList xnl = xn.ChildNodes
遍历xnl即可得到所有xn的子节点。
using Systemusing System.Collections.Generic
using System.Linq
using System.Text
using System.Xml
namespace WebSiteAssistant
{
public class CityDropdown
{
public List<City> GetCityInfo(XmlNodeList nodeList)
{
List<City> cityList = new List<City>()
for (int i = 0 i < nodeList.Count i++)
{
XmlNode node = nodeList.Item(i)
City ct = new City()
foreach (XmlAttribute att in node.Attributes)
{
int findID = att.Name.IndexOf("ID")
if (findID > 1)
{
ct.CityID = att.Value
}
else if (findID < 0)
{
ct.CityName = att.Value
}
}
cityList.Add(ct)
}
return cityList
}
public XmlNodeList GetNode(XmlDataDocument xmlCity, int Level, string cityID)
{
//省
if (Level == 1)
return xmlCity.ChildNodes[0].ChildNodes
//省下县
if (Level == 2)
{
for (int i = 0 i < xmlCity.ChildNodes[0].ChildNodes.Count i++)
{
foreach (XmlAttribute att in xmlCity.ChildNodes[0].ChildNodes[i].Attributes)
{
int findID = att.Name.IndexOf("ID")
if (findID > 1 && att.Value == cityID)
{
return xmlCity.ChildNodes[0].ChildNodes[i].ChildNodes
}
}
}
}
//县下区
if (Level == 3)
{
for (int i = 0 i < xmlCity.ChildNodes[0].ChildNodes.Count i++)
{
for (int j = 0 j < xmlCity.ChildNodes[0].ChildNodes[i].ChildNodes.Count j++)
{
foreach (XmlAttribute att in xmlCity.ChildNodes[0].ChildNodes[i].ChildNodes[j].Attributes)
{
int findID = att.Name.IndexOf("ID")
if (findID > 1 && att.Value == cityID)
{
return xmlCity.ChildNodes[0].ChildNodes[i].ChildNodes[j].ChildNodes
}
}
}
}
}
return null
}
}
public class TestCity
{
static void Main(string[] args)
{
try
{
XmlDataDocument xmlCity = new XmlDataDocument()
xmlCity.Load(@"..\..\City.xml")
CityDropdown dorpDown = new CityDropdown()
//取省
XmlNodeList levelNode1 = dorpDown.GetNode(xmlCity, 1, "")
List<City> city1 = new List<City>()
city1 = dorpDown.GetCityInfo(levelNode1)
Console.WriteLine(city1.Count)
//取省的下一级
XmlNodeList levelNode2 = dorpDown.GetNode(xmlCity, 2, "110000")
List<City> city2 = new List<City>()
city2 = dorpDown.GetCityInfo(levelNode2)
Console.WriteLine(city2.Count)
//取县的详情
XmlNodeList levelNode3 = dorpDown.GetNode(xmlCity, 3, "110100")
List<City> city3 = new List<City>()
city3 = dorpDown.GetCityInfo(levelNode3)
Console.WriteLine(city3.Count)
}
catch (Exception ex)
{
ex.ToString()
Console.WriteLine(ex.ToString())
}
Console.Read()
}
}
public class City
{
private string _cityID
/// <summary>
/// 编号
/// </summary>
public string CityID
{
get { return _cityID }
set { _cityID = value }
}
private string _cityName
/// <summary>
/// 名称
/// </summary>
public string CityName
{
get { return _cityName }
set { _cityName = value }
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)