xml绑定省市,并实现二级联动

本文介绍了一段使用XML文档加载并解析中国行政区划数据的代码,通过XML文档获取省份、城市列表及对应的城市区号,实现地区信息的自动化处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ExpandedBlockStart.gif查看代码
  1 private System.Xml.XmlDocument xmldoc;        
  2 protected void ddlprovince_SelectedIndexChanged(object sender, EventArgs e)
  3         {
  4             string provincename = this.ddlprovince.SelectedItem.Text;
  5             //ListItemCollection lis = this.ddlprovince.Items;
  6             this.ddlcity.DataSource = GetCityByname(provincename);
  7             this.ddlcity.DataBind();
  8         }
  9 
 10 
 11         public void loadxml()
 12         {
 13             string xmlpath = Server.MapPath("ChinaArea.xml");
 14             xmldoc = new System.Xml.XmlDocument();
 15 
 16             xmldoc.Load(xmlpath);
 17 
 18         }
 19 
 20         public  List<string> GetProvince()
 21         {
 22 
 23             List<string> listcountry = new List<string>();
 24 
 25             loadxml();
 26 
 27             System.Xml.XmlNodeList nodeList = xmldoc.SelectSingleNode("area").ChildNodes;
 28 
 29             //获取obj节点的所有子节点
 30             foreach (System.Xml.XmlNode xn in nodeList)//遍历所有子节点
 31             {
 32 
 33                 System.Xml.XmlElement xe = (System.Xml.XmlElement)xn;//将子节点类型转换为XmlElement类型
 34 
 35                 string countryname = xe.GetAttribute("province");//取出子节点下name属性的值
 36 
 37                 listcountry.Add(countryname);
 38 
 39             }
 40 
 41             return listcountry;
 42 
 43         }
 44 
 45         //跟据节点名取出其属性value的值
 46 
 47         public List<string> GetCityByname(string name) //参数name为省的名称 根据省名称得到市列表
 48         {
 49 
 50             List<string> listcity = new List<string>();
 51             loadxml();
 52             System.Xml.XmlNodeList nodeList = xmldoc.SelectSingleNode("area").ChildNodes;
 53             //获取obj节点的所有子节点
 54             foreach (System.Xml.XmlNode xn in nodeList)//遍历所有子节点
 55             {
 56 
 57                 System.Xml.XmlElement xe = (System.Xml.XmlElement)xn;//将子节点类型转换为XmlElement类型
 58 
 59                 if (xe.GetAttribute("province") == name) //
 60                 {
 61 
 62                     System.Xml.XmlNodeList listnode = xe.ChildNodes;
 63 
 64                     foreach (System.Xml.XmlNode xc in listnode)
 65                     {
 66 
 67                         System.Xml.XmlElement xce = (System.Xml.XmlElement)xc;
 68 
 69                         string cityname = xce.GetAttribute("City");
 70                         listcity.Add(cityname);
 71                         
 72                     }
 73                 }
 74 
 75             }
 76             return listcity;
 77 
 78         }
 79         /// <summary>
 80         /// 获得对应城市的区号
 81         /// </summary>
 82         /// <param name="city"></param>
 83         /// <returns></returns>
 84         protected string GetCityAreacode(string city)
 85         {
 86             string code = "";
 87             loadxml();
 88             System.Xml.XmlNodeList nodeList = xmldoc.SelectSingleNode("area").ChildNodes;
 89             //获取obj节点的所有子节点
 90             foreach (System.Xml.XmlNode xn in nodeList)//遍历所有子节点
 91             {
 92 
 93                 System.Xml.XmlElement xe = (System.Xml.XmlElement)xn;//将子节点类型转换为XmlElement类型
 94 
 95                 if (xe.GetAttribute("province") == ddlprovince.SelectedItem.Text) //
 96                 {
 97 
 98                     System.Xml.XmlNodeList listnode = xe.ChildNodes;
 99 
100                     foreach (System.Xml.XmlNode xc in listnode)
101                     {
102 
103                         System.Xml.XmlElement xce = (System.Xml.XmlElement)xc;
104 
105                         string cityname = xce.GetAttribute("City");
106                         if (cityname == city)
107                         {
108                            code = xce.GetAttribute("areacode");
109                            txtZipCode.Text = xce.GetAttribute("code");//获得邮政编码
110                         }
111 
112                     }
113                 }
114 
115             }
116             return code;
117         }

转载于:https://www.cnblogs.com/mikehhs/archive/2011/12/05/2276889.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值