使用jQuery+HttpHandler+xml模拟例子
来源:广州中睿信息技术有限公司官网
发布时间:2012/10/21 23:25:16 编辑:editor 阅读 481
昨天同学问我有关如何快速读取多层级xml文件的问题,于是我就使用省、市、县模拟了一个三级联动的例子,客户端使用jQuery实现异步加载服务器返回的json数据,服务器端则使用XPath表达式查询数据

昨天同学问我有关如何快速读取多层级xml文件的问题,于是我就使用省、市、县模拟了一个三级联动的例子,客户端使用jQuery实现异步加载服务器返回的json数据,服务器端则使用XPath表达式查询数据。如下是实现过程:


第一步:准备xml文件,并放置在网站根目录下,名为Area.xml

View Code
   1 <?xml version="1.0" encoding="utf-8" ?>   2 <area>   3   <province id="1" name="北京">   4     <city id="1" name="北京">   5       <county id="1" name="东城区" />   6       <county id="2" name="西城区" />   7     </city>   8   </province>   9   <province id="2" name="河北省">  10     <city id="1" name="石家庄市">  11       <county id="1" name="正定县" />  12       <county id="2" name="灵寿县" />  13     </city>  14     <city id="2" name="邯郸市">  15       <county id="1" name="邯郸县" />  16       <county id="2" name="永年县" />  17     </city>  18   </province>  19   <province id="3" name="海南省">  20     <city id="1" name="海口市">  21       <county id="1" name="龙华区" />  22       <county id="2" name="秀英区" />  23       <county id="3" name="美兰区" />  24     </city>  25     <city id="2" name="三亚市">  26       <county id="1" name="天涯镇" />  27       <county id="2" name="凤凰镇" />  28     </city>  29   </province>  30 </area>

第二步:创建与xml文件中定义的元素对应的实体类。

<province/>对应province类

View Code
   1 public class Province   2 {   3    private string id;   4    /// <summary>   5    /// 编号   6    /// </summary>   7    public string Id   8    {   9       get { return id; }  10       set { id = value; }  11    }  12    private string name;  13    /// <summary>  14    /// 名称  15    /// </summary>  16    public string Name  17    {  18       get { return name; }  19       set { name = value; }  20    }  21 }

<city/>对应City类:

View Code
   1 public class City   2 {   3    private string id;   4    /// <summary>   5    /// 编号   6    /// </summary>   7    public string Id   8    {   9       get { return id; }  10       set { id = value; }  11    }  12    private string name;  13    /// <summary>  14    /// 名称  15    /// </summary>  16    public string Name  17    {  18       get { return name; }  19       set { name = value; }  20    }  21 }

<county/>对应county类:

View Code
   1 public class County   2 {   3    private string id;   4    /// <summary>   5    ///  编号   6    /// </summary>   7    public string Id   8    {   9       get { return id; }  10       set { id = value; }  11    }  12    private string name;  13    /// <summary>  14    /// 名称  15    /// </summary>  16    public string Name  17    {  18       get { return name; }  19       set { name = value; }  20    }  21 }

第三步:编写服务器端处理程序类:Handler.cs

View Code
    1 /// <summary>    2 /// 处理程序    3 /// </summary>    4 public class Handler : IHttpHandler    5 {    6     7    private static XDocument doc;    8    private string filePath = HttpContext.Current.Server.MapPath("~/Area.xml");    9    //javascript序列化类   10    private static JavaScriptSerializer jss = new JavaScriptSerializer();   11          12    13    public void ProcessRequest(HttpContext context)   14    {   15    16       context.Response.ContentType = "text/plain";   17       string result = "failure";//默认返回结果为失败   18       HttpRequest req = context.Request;   19    20       string province = req["province"];//获取用户选择的省的编号   21       string city = req["city"];//获取用户选择的市的编号   22       string county = req["county"];//获取用户选择的县的编号   23       string type = req["type"];//获取用户需要获取的省市县列表的类型   24    25       InitDoc();   26    27       if (type.HasValue())   28       {   29          switch (type.ToLower())   30          {   31             case "province"://如果用户需要获取省级列表   32                result = jss.Serialize(GetProvinceList());   33                break;   34             case "city"://如果用户需要获取的是市级列表   35                result = jss.Serialize(GetCityListByProvince(province));   36                break;   37             case "
        
    
联系我们CONTACT 扫一扫
愿景:成为最专业的软件研发服务领航者
中睿信息技术有限公司 广州•深圳 Tel:020-38931912 务实 Pragmatic
广州:广州市天河区翰景路1号金星大厦18层中睿信息 Fax:020-38931912 专业 Professional
深圳:深圳市福田区车公庙有色金属大厦509~510 Tel:0755-25855012 诚信 Integrity
所有权声明:PMI, PMP, Project Management Professional, PMI-ACP, PMI-PBA和PMBOK是项目管理协会(Project Management Institute, Inc.)的注册标志。
版权所有:广州中睿信息技术有限公司 粤ICP备13082838号-2