XML文件
实体类
页面后台代码
<?xml version="1.0" encoding="utf-8" ?>
<address>
<province name="福建" key="1">
<city name="龙岩" key="1">龙岩</city>
<city name="厦门" key="2">厦门</city>
<city name="漳州" key="3">漳州</city>
<city name="泉州" key="4">泉州</city>
</province>
<province name="湖北" key="2">
<city name="武汉" key="1">武汉</city>
<city name="黄冈" key="2">黄冈</city>
<city name="黄冈" key="3">宜昌</city>
</province>
<province name="四川" key="3">
<city name="成都" key="1">成都</city>
<city name="绵阳" key="2">绵阳</city>
<city name="德阳" key="3">德阳</city>
</province>
</address>
实体类
public class Province
{
private int id;
public int Id
{
get { return id; }
set { id = value; }
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
public class City
{
private int id;
public int Id
{
get { return id; }
set { id = value; }
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
页面后台代码
string xmlPath = "xml文档路径";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ddlCity.Items.Insert(0, new ListItem("-----请选择------", "0"));
BindDDL(xmlPath);
}
}
private void BindDDL(string xmlPath)
{
List<Province> pList = GetProvince(xmlPath);
ddlProvince.DataSource = pList;
ddlProvince.DataTextField = "name";
ddlProvince.DataValueField = "id";
ddlProvince.DataBind();
ddlProvince.Items.Insert(0, new ListItem("---------请选择-------", "0"));
}
/// <summary>
/// 从XML文档里读取省份
/// </summary>
/// <param name="xmlPath"></param>
/// <returns></returns>
private List<Province> GetProvince(string xmlPath)
{
List<Province> provinces = new List<Province>();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlPath);
XmlNode root = xmlDoc.SelectSingleNode("address");
XmlNodeList xnl = root.ChildNodes;
foreach (XmlNode provinceNode in xnl)
{
XmlElement xe = (XmlElement)provinceNode;
Province p = new Province();
p.Id = Convert.ToInt32( xe.GetAttribute("key"));
p.Name = xe.GetAttribute("name");
provinces.Add(p);
}
return provinces;
}
/// <summary>
/// 根据省份读取城市
/// </summary>
/// <param name="xmlPath"></param>
/// <param name="p"></param>
/// <returns></returns>
private List<City> GetCityByP(string xmlPath, string p)
{
List<City> cList = new List<City>();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlPath);
XmlNode root = xmlDoc.SelectSingleNode("address");
XmlNodeList xnl = root.ChildNodes;
foreach (XmlNode node in xnl)
{
XmlElement xe = (XmlElement)node;
if (xe.GetAttribute("key") == p)
{
foreach (XmlNode node2 in node.ChildNodes)
{
XmlElement xe2 = (XmlElement)node2;
City c = new City();
c.Id =Convert.ToInt32( xe2.GetAttribute("key"));
c.Name = xe2.GetAttribute("name");
cList.Add(c);
}
}
}
return cList;
}
protected void ddlProvince_SelectedIndexChanged(object sender, EventArgs e)
{
string p = ddlProvince.SelectedValue;
List<City> list = GetCityByP(xmlPath, p);
ddlCity.DataSource = list;
ddlCity.DataValueField = "id";
ddlCity.DataTextField = "name";
ddlCity.DataBind();
ddlCity.Items.Insert(0, new ListItem("-----请选择------", "0"));
}