- 浏览: 25576 次
- 性别:
- 来自: 深圳
最新评论
dom解析xml实现省市区动态级联是一个项目中的一部分,项目是springMVC实现的,其配置文件这儿就不在说了,现只简单列出一些主要的代码。看懂需要有一定的springMVC基础
配置文件中的省的值
city.area.province=黑龙江,湖南
在action中
private @Value("${city.area.province}") String provinceStr;
model.addAttribute("provinceList", ManagerUtil.getSelectBean(provinceStr));//获取省的下拉列表
//根据省获取市 public void getCityListByProvince(@RequestParam("province") String province, Model model, HttpServletResponse response) { try { province = URLDecoder.decode(province, "utf-8"); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } response.setCharacterEncoding("utf-8"); getListValue("province", "city", province, response); } //根据市获取区县 public void getAreaListByCity(@RequestParam("city") String city, Model model, HttpServletResponse response) { try { city = URLDecoder.decode(city, "utf-8"); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } response.setCharacterEncoding("utf-8"); getListValue("city", "area", city, response); } // private void getListValue(String type, String childType, String value, HttpServletResponse response) { StringBuilder sb = new StringBuilder(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); try { DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new File(UserController.class.getResource("/").toString().substring(6) + "/city-area.xml")); NodeList nodeList = document.getElementsByTagName(type); for(int i=0; i<nodeList.getLength(); i++) { Element e = (Element) nodeList.item(i); String name = e.getAttribute("name"); if(name.equals(value)){ NodeList childList = e.getElementsByTagName(childType) ; for(int j=0; j<childList.getLength(); j++) { sb.append(",").append(((Element) childList.item(j)).getAttribute("name")); } break; } } }catch(SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch(ParserConfigurationException e) { e.printStackTrace(); } try { response.getWriter().write(JsonUtil.toJsonString(ManagerUtil.getSelectBean(sb.substring(1).toString()))); } catch (IOException e) { e.printStackTrace(); } }
JsonUtil类的toJsonString方法
public static String toJsonString(Object o) { if(o instanceof Collection) { StringBuffer buf = new StringBuffer(""); Object[] objs = JSONArray.fromObject(o).toArray(); for (int i = 0; i < objs.length; i ++) { if(i!=0) buf.append(","); buf.append(JSONObject.fromObject(objs[i]).toString()); } return "{totalCount:" + objs.length + ",root:[" + buf.toString() + "]}"; } return JSONObject.fromObject(o).toString(); }
ManagerUtil类中的getSelectBean方法
public static List<SelectBean> getSelectBean(String str) { List<SelectBean> selectBeanList = new ArrayList<SelectBean>(); if (!StringUtils.isEmpty(str)) { for (String item : str.split(",")) { SelectBean selectBean = new SelectBean(); selectBean.setLabel(item.trim()); selectBean.setValue(item.trim()); selectBeanList.add(selectBean); } } return selectBeanList; }
jsp主要部分
<script type="text/javascript">function changeCityList(obj) { var citySelect = $("#uCity"); var areaSelect = $("#uArea"); citySelect.empty(); areaSelect.empty(); citySelect.append("<option value=''>请选择市</option>"); areaSelect.append("<option value=''>请选择区/县</option>"); if($(obj).val() != '') { $.ajax({ type: "POST", url: '....../getCityListByProvince.do?province=' + encodeURIComponent(encodeURIComponent($(obj).val())), async:false, dataType:'text', success: function(json) { var data = (eval('(' + json + ')')).root; for(var i=0; i<data.length; i++){ citySelect.append("<option value=" + data[i].value + ">" + data[i].label + "</option>"); } } }); } } function changeAreaList(obj) { // alert($(obj).val()); var areaSelect = $("#uArea"); areaSelect.empty(); areaSelect.append("<option value=''>请选择区/县</option>"); if($(obj).val() != ''){ $.ajax({ type: "POST", url: '...../getAreaListByCity.do?city=' + encodeURIComponent(encodeURIComponent($(obj).val())), async:false, dataType:'text', success: function(json) { // var areaSelect = $("#uArea"); var data = (eval('(' + json + ')')).root; for(var i=0; i<data.length; i++){ areaSelect.append("<option value=" + data[i].value + ">" + data[i].label + "</option>"); } } }); } } </script> <div class="rfm"> <table> <tr> <th><span class="rq">*</span><label for="369bQT">省:</label></th> <td> <select id="uProvince" onchange="changeCityList(this)" name="uProvince" style="width:230px"> <option value="">请选择省份</option> <c:forEach items="${provinceList }" var="province"> <option value="${province.value }">${province.label }</option> </c:forEach> </select> </td> </tr> </table> </div> <div class="rfm"> <table> <tr> <th><span class="rq">*</span><label for="369bQT">市:</label></th> <td> <select id="uCity" name="uCity" onchange="changeAreaList(this)" style="width:230px"> <option value="">请选择市</option> </select> </td> </tr> </table> </div> <div class="rfm"> <table> <tr> <th><span class="rq">*</span><label for="369bQT">区:</label></th> <td> <select id="uArea" name="uArea" style="width:230px"> <option value="">请选择区/县</option> </select> </td> </tr> </table> </div>
city-area.xml的部分内容(这里主要是说明一下它的格式)
<?xml version="1.0" encoding="UTF-8" ?> <root name="中国"> <province name="黑龙江" id="黑龙江"> <city name="大庆市"> <area name="萨尔图区"/> <area name="龙凤区"/> <area name="让胡路区"/> <area name="红岗区"/> <area name="大同区"/> <area name="肇州县"/> <area name="肇源县"/> <area name="林甸县"/> <area name="杜尔伯特蒙古族自治县"/> </city> <city name="七台河市"> <area name="桃山区"/> <area name="新兴区"/> <area name="茄子河区"/> <area name="勃利县"/> </city> </province> </root>
发表评论
-
web.xml配置与基本作用
2012-04-12 10:26 701web工程中的web.xml文件有什么作用呢?它是每个w ... -
CentOS6.2安装配置tomcat
2012-06-12 21:02 484在官方网站上下载将安装的版本(我下载的是最新版apache-t ... -
VMware Tools实现windows与linux的文件共享(原创)
2012-06-24 16:45 2027在VMware虚拟机中安装好 ... -
Java遍历文件夹的2种方法
2012-08-11 23:26 743Java遍历文件夹的2种方法 A:不使用递归 import ... -
struts2 checkboxlist标签的使用简介
2012-08-19 18:52 742checkboxllist标签可以一次 ... -
CloudFoundry中vmc命令使用简单说明
2012-04-27 10:28 587先安装ruby然后再安装vmc,命令如下: $rvm ... -
Integer与int解惑
2012-06-07 14:08 794今天在逛论坛时发现一些好的帖子,进去看了后发现有些知识点平常自 ...
相关推荐
总之,利用JavaScript解析XML文件实现省市县三级级联下拉菜单,主要涉及XML数据的获取、解析、DOM操作和事件监听。这一技术对于构建地理定位、地址选择等场景的应用非常实用,而且可以灵活地适应不同层次的分类数据...
这个“Ajax实现省市区三级级联Demo”是一个典型的前端与后端交互的实例,它展示了如何利用Ajax技术从MySQL数据库动态获取并显示省级、市级、区县级的数据,实现联动选择的效果。下面我们将详细探讨这一知识点。 ...
在实现省市区级联时,jQuery可以方便地处理DOM操作,监听用户的选择,并动态加载下级级联的数据。 XML(Extensible Markup Language)是一种数据交换格式,常用于存储结构化数据。在这种应用场景中,XML文件可能...
1. **XML数据结构**:首先,我们需要创建一个XML文件来存储省市区的数据。每个省份将作为一个顶级元素,城市作为子元素。例如: ```xml 杭州 宁波 上海 南京 ``` 这样的结构便于我们读取和操作数据。...
7. **JSON 数据文件**:`map_json.jsp`可能是一个服务器端动态生成的JSON文件,包含省市区的数据结构,供JavaScript解析并显示在地图上。 8. **JavaScript 文件**:`map.js`是JavaScript代码文件,可能包含了...
在JavaScript编程中,实现省市区级联是...前端利用JavaScript的DOM操作、事件监听、JSON解析等技术实现动态级联效果,后端通过C#和.NET平台提供数据支持。理解并掌握这些知识点,对于开发交互丰富的网页应用至关重要。
本主题将深入探讨如何创建和读取包含省市县三级级联信息的XML文件。 首先,我们需要理解XML文件的基本结构。XML是一种标记语言,通过标签来描述数据。在省市县三级级联的XML文件中,每个省市县信息可以被封装为一个...
在这个名为“省市县三级级联js+xml”的压缩包中,我们主要会探讨如何使用JavaScript和XML来实现这样的功能。 JavaScript是一种广泛使用的客户端脚本语言,它可以在用户的浏览器上运行,用于增强网页的交互性和动态...
在本篇文档中,将会详细探讨如何利用Ajax技术,结合前端JavaScript和后端Java解析JSON技术,从MySQL数据库中抽取省市区三级行政区划数据,并实现网页端的级联选择功能。以下为详细介绍的知识点: 1. **Ajax技术**:...
这个"JS+XML 省市区 三级联动下拉框"的实现涉及到了前端开发的核心技能,包括JavaScript的事件处理、DOM操作以及XML的数据解析,对于学习和提升Web开发能力非常有帮助。同时,它也体现了前后端分离的思想,XML作为...
在这个项目中,JS将负责处理用户的选择事件,动态更新下拉菜单,实现省市区的联动效果。例如,当用户在“省份”下拉框中选择一个省份时,JS会根据选择的省份加载对应的市和区的列表,实现数据的实时更新。 XML...
在这个例子中,jQuery可能被用来处理DOM操作、事件监听以及Ajax请求,实现省市区三级联动的逻辑。 在提供的压缩包文件`demo`中,通常会包含HTML、CSS、JavaScript等文件,这些文件组合起来演示了如何使用jQuery和...
使用js+xmldom+xpath实现的三级联动菜单, 以一个国标的行政区划码的xml文件为例子,展示省市县三级联动,菜单的初始值在html的hidden字段设置了山东省-青岛市-平度市。 你可以把他换成你需要xml文件,或者xml字符...
在IT领域,级联(Cascading)是一种常见的设计模式,尤其在前端开发中,用于实现数据的层次结构,如省市区的选择。本案例中提到的"省市三级联动(XML)"是一个基于XML(eXtensible Markup Language)的数据结构,...
这里,AJAX是异步 JavaScript 和 XML 的缩写,虽然现在更多的是与JSON数据格式配合使用,因为JSON更轻量且易于解析。 在描述中提到,部分数据是通过JSON文件外部引用的。JSON(JavaScript Object Notation)是一种...
后端将返回省市区的数据,可能是JSON格式,便于前端解析。 在jQuery部分,我们可以使用`.change()`事件监听选择框的改变,当用户在省份选择框中选择一项时,触发AJAX请求,获取对应省份的城市列表。同样,当城市被...
5. **数据库设计**:项目可能包含一个数据库,存储全国的省市区数据,包括ID、名称等字段,以便于查询和更新。 6. **前端模板引擎**:可能使用了一些前端模板引擎(如JQuery Templates或AngularJS),来渲染动态...
在项目中,我们需要创建一个表来存储省市区信息,可能包含`id`、`name`、`parent_id`等字段,其中`parent_id`用于表示省份和城市之间的层级关系。 MVC模式是软件设计中的一种经典架构模式,它将应用程序分为三个...
在级联下拉框中,JSON常用来存储级联关系的数据,如省市区的层级关系,每个省包含多个市,每个市包含多个区。 2. **jQuery库**:jQuery是一个强大的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax...
【经典Ajax省市级联菜单】是一个利用Ajax技术实现的交互式菜单系统,它通过与后台服务器的异步通信,实现了省市区数据的动态加载。在这个系统中,用户选择省份时,Ajax会向服务器发送请求,服务器响应后返回对应省份...