servlet 解析dom4j解析xml文件 ajax省市联动

xml 文件 china.xml

<?xml version="1.0" encoding="UTF-8"?>
<china>
    <province name="北京">
        <city>东城区</city>
        <city>西城区</city>
        <city>崇文区</city>
        <city>宣武区</city>
        <city>朝阳区</city>
        <city>丰台区</city>
        <city>石景山区</city>
        <city>海淀区</city>
        <city>门头沟区</city>
        <city>房山区</city>
        <city>通州区</city>
        <city>顺义区</city>
        <city>昌平区</city>
        <city>大兴区</city>
        <city>怀柔区</city>
        <city>平谷区</city>
        <city>密云县</city>
        <city>延庆县</city>
    </province>
    <province name="天津">
        <city>和平区</city>
        <city>河东区</city>
        <city>河西区</city>
        <city>南开区</city>
        <city>河北区</city>
        <city>红桥区</city>
        <city>塘沽区</city>
        <city>汉沽区</city>
        <city>大港区</city>
        <city>东丽区</city>
        <city>西青区</city>
        <city>津南区</city>
        <city>北辰区</city>
        <city>武清区</city>
        <city>宝坻区</city>
        <city>宁河县</city>
        <city>静海县</city>
        <city>蓟县</city>
    </province>
    <province name="河北">
        <city>石家庄</city>
        <city>唐山</city>
        <city>秦皇岛</city>
        <city>邯郸</city>
        <city>邢台</city>
        <city>保定</city>
        <city>张家口</city>
        <city>承德</city>
        <city>沧州</city>
        <city>廊坊</city>
        <city>衡水</city>
    </province>

    <province name="山西">
        <city>太原</city>
        <city>大同</city>
        <city>阳泉</city>
        <city>长治</city>
        <city>晋城</city>
        <city>朔州</city>
        <city>晋中</city>
        <city>运城</city>
        <city>忻州</city>
        <city>临汾</city>
        <city>吕梁</city>
    </province>
    <province name="内蒙古">
        <city>呼和浩特</city>
        <city>包头</city>
        <city>乌海</city>
        <city>赤峰</city>
        <city>通辽</city>
        <city>鄂尔多斯</city>
        <city>呼伦贝尔</city>
        <city>巴彦淖尔</city>
        <city>乌兰察布</city>
        <city>兴安盟</city>
        <city>锡林郭勒盟</city>
        <city>阿拉善盟</city>
    </province>
    <province name="辽宁">
        <city>沈阳</city>
        <city>大连</city>
        <city>鞍山</city>
        <city>抚顺</city>
        <city>本溪</city>
        <city>丹东</city>
        <city>锦州</city>
        <city>营口</city>
        <city>阜新</city>
        <city>辽阳</city>
        <city>盘锦</city>
        <city>铁岭</city>
        <city>朝阳</city>
        <city>葫芦岛</city>
    </province>
    <province name="吉林">
        <city>长春</city>
        <city>吉林</city>
        <city>四平</city>
        <city>辽源</city>
        <city>通化</city>
        <city>白山</city>
        <city>松原</city>
        <city>白城</city>
        <city>延边</city>
    </province>
    <province name="黑龙江">
        <city>哈尔滨</city>
        <city>齐齐哈尔</city>
        <city>鸡西</city>
        <city>鹤岗</city>
        <city>双鸭山</city>
        <city>大庆</city>
        <city>伊春</city>
        <city>佳木斯</city>
        <city>七台河</city>
        <city>牡丹江</city>
        <city>黑河</city>
        <city>绥化</city>
        <city>大兴安岭</city>
    </province>
    <province name="上海">
        <city>黄浦区</city>
        <city>卢湾区</city>
        <city>徐汇区</city>
        <city>长宁区</city>
        <city>静安区</city>
        <city>普陀区</city>
        <city>闸北区</city>
        <city>虹口区</city>
        <city>杨浦区</city>
        <city>闵行区</city>
        <city>宝山区</city>
        <city>嘉定区</city>
        <city>浦东新区</city>
        <city>金山区</city>
        <city>松江区</city>
        <city>青浦区</city>
        <city>南汇区</city>
        <city>奉贤区</city>
        <city>崇明县</city>
    </province>
    <province name="江苏">
        <city>南京</city>
        <city>无锡</city>
        <city>徐州</city>
        <city>常州</city>
        <city>苏州</city>
        <city>南通</city>
        <city>连云港</city>
        <city>淮安</city>
        <city>盐城</city>
        <city>扬州</city>
        <city>镇江</city>
        <city>泰州</city>
        <city>宿迁</city>
    </province>
    <province name="浙江">
        <city>杭州</city>
        <city>宁波</city>
        <city>温州</city>
        <city>嘉兴</city>
        <city>湖州</city>
        <city>绍兴</city>
        <city>金华</city>
        <city>衢州</city>
        <city>舟山</city>
        <city>台州</city>
        <city>丽水</city>
    </province>
    <province name="安徽">
        <city>合肥</city>
        <city>芜湖</city>
        <city>蚌埠</city>
        <city>淮南</city>
        <city>马鞍山</city>
        <city>淮北</city>
        <city>铜陵</city>
        <city>安庆</city>
        <city>黄山</city>
        <city>滁州</city>
        <city>阜阳</city>
        <city>宿州</city>
        <city>巢湖</city>
        <city>六安</city>
        <city>亳州</city>
        <city>池州</city>
        <city>宣城</city>
    </province>
    <province name="福建">
        <city>福州</city>
        <city>厦门</city>
        <city>莆田</city>
        <city>三明</city>
        <city>泉州</city>
        <city>漳州</city>
        <city>南平</city>
        <city>龙岩</city>
        <city>宁德</city>
    </province>
    <province name="江西">
        <city>南昌</city>
        <city>景德镇</city>
        <city>萍乡</city>
        <city>九江</city>
        <city>新余</city>
        <city>鹰潭</city>
        <city>赣州</city>
        <city>吉安</city>
        <city>宜春</city>
        <city>抚州</city>
        <city>上饶</city>
    </province>
    <province name="山东">
        <city>济南</city>
        <city>青岛</city>
        <city>淄博</city>
        <city>枣庄</city>
        <city>东营</city>
        <city>烟台</city>
        <city>潍坊</city>
        <city>济宁</city>
        <city>泰安</city>
        <city>威海</city>
        <city>日照</city>
        <city>莱芜</city>
        <city>临沂</city>
        <city>德州</city>
        <city>聊城</city>
        <city>滨州</city>
        <city>荷泽</city>
    </province>
    <province name="河南">
        <city>郑州</city>
        <city>开封</city>
        <city>洛阳</city>
        <city>平顶山</city>
        <city>安阳</city>
        <city>鹤壁</city>
        <city>新乡</city>
        <city>焦作</city>
        <city>濮阳</city>
        <city>许昌</city>
        <city>漯河</city>
        <city>三门峡</city>
        <city>南阳</city>
        <city>商丘</city>
        <city>信阳</city>
        <city>周口</city>
        <city>驻马店</city>
    </province>
    <province name="湖北">
        <city>武汉</city>
        <city>黄石</city>
        <city>十堰</city>
        <city>宜昌</city>
        <city>襄樊</city>
        <city>鄂州</city>
        <city>荆门</city>
        <city>孝感</city>
        <city>荆州</city>
        <city>黄冈</city>
        <city>咸宁</city>
        <city>随州</city>
        <city>恩施</city>
        <city>神农架</city>
    </province>
    <province name="湖南">
        <city>长沙</city>
        <city>株洲</city>
        <city>湘潭</city>
        <city>衡阳</city>
        <city>邵阳</city>
        <city>岳阳</city>
        <city>常德</city>
        <city>张家界</city>
        <city>益阳</city>
        <city>郴州</city>
        <city>永州</city>
        <city>怀化</city>
        <city>娄底</city>
        <city>湘西</city>
    </province>
    <province name="广东">
        <city>广州</city>
        <city>韶关</city>
        <city>深圳</city>
        <city>珠海</city>
        <city>汕头</city>
        <city>佛山</city>
        <city>江门</city>
        <city>湛江</city>
        <city>茂名</city>
        <city>肇庆</city>
        <city>惠州</city>
        <city>梅州</city>
        <city>汕尾</city>
        <city>河源</city>
        <city>阳江</city>
        <city>清远</city>
        <city>东莞</city>
        <city>中山</city>
        <city>潮州</city>
        <city>揭阳</city>
        <city>云浮</city>
    </province>
    <province name="广西">
        <city>南宁</city>
        <city>柳州</city>
        <city>桂林</city>
        <city>梧州</city>
        <city>北海</city>
        <city>防城港</city>
        <city>钦州</city>
        <city>贵港</city>
        <city>玉林</city>
        <city>百色</city>
        <city>贺州</city>
        <city>河池</city>
        <city>来宾</city>
        <city>崇左</city>
    </province>
    <province name="海南">
        <city>海口</city>
        <city>三亚</city>
    </province>
    <province name="重庆">
        <city>重庆</city>
        <city>万州区</city>
        <city>涪陵区</city>
        <city>渝中区</city>
        <city>大渡口区</city>
        <city>江北区</city>
        <city>沙坪坝区</city>
        <city>九龙坡区</city>
        <city>南岸区</city>
        <city>北碚区</city>
        <city>万盛区</city>
        <city>双桥区</city>
        <city>渝北区</city>
        <city>巴南区</city>
        <city>黔江区</city>
        <city>长寿区</city>
        <city>綦江县</city>
        <city>潼南县</city>
        <city>铜梁县</city>
        <city>大足县</city>
        <city>荣昌县</city>
        <city>璧山县</city>
        <city>梁平县</city>
        <city>城口县</city>
        <city>丰都县</city>
        <city>垫江县</city>
        <city>武隆县</city>
        <city>忠县</city>
        <city>开县</city>
        <city>云阳县</city>
        <city>奉节县</city>
        <city>巫山县</city>
        <city>巫溪县</city>
        <city>石柱土家族自治县</city>
        <city>秀山土家族苗族自治县</city>
        <city>酉阳土家族苗族自治县</city>
        <city>彭水苗族土家族自治县</city>
        <city>江津</city>
        <city>合川</city>
        <city>永川</city>
        <city>南川</city>
    </province>
    <province name="四川">
        <city>成都</city>
        <city>自贡</city>
        <city>攀枝花</city>
        <city>泸州</city>
        <city>德阳</city>
        <city>绵阳</city>
        <city>广元</city>
        <city>遂宁</city>
        <city>内江</city>
        <city>乐山</city>
        <city>南充</city>
        <city>眉山</city>
        <city>宜宾</city>
        <city>广安</city>
        <city>达州</city>
        <city>雅安</city>
        <city>巴中</city>
        <city>资阳</city>
        <city>阿坝</city>
        <city>甘孜</city>
        <city>凉山</city>
    </province>
    <province name="贵州">
        <city>贵阳</city>
        <city>六盘水</city>
        <city>遵义</city>
        <city>安顺</city>
        <city>铜仁</city>
        <city>黔西南</city>
        <city>毕节</city>
        <city>黔东南</city>
        <city>黔南</city>
    </province>
    <province name="云南">
        <city>昆明</city>
        <city>曲靖</city>
        <city>玉溪</city>
        <city>保山</city>
        <city>昭通</city>
        <city>丽江</city>
        <city>思茅</city>
        <city>临沧</city>
        <city>楚雄</city>
        <city>红河</city>
        <city>文山</city>
        <city>西双版纳</city>
        <city>大理</city>
        <city>德宏</city>
        <city>怒江</city>
        <city>迪庆</city>
    </province>
    <province name="西藏">
        <city>拉萨</city>
        <city>昌都</city>
        <city>山南</city>
        <city>日喀则</city>
        <city>那曲</city>
        <city>阿里</city>
        <city>林芝</city>
    </province>
    <province name="陕西">
        <city>西安</city>
        <city>铜川</city>
        <city>宝鸡</city>
        <city>咸阳</city>
        <city>渭南</city>
        <city>延安</city>
        <city>汉中</city>
        <city>榆林</city>
        <city>安康</city>
        <city>商洛</city>
    </province>
    <province name="甘肃">
        <city>兰州</city>
        <city>嘉峪关</city>
        <city>金昌</city>
        <city>白银</city>
        <city>天水</city>
        <city>武威</city>
        <city>张掖</city>
        <city>平凉</city>
        <city>酒泉</city>
        <city>庆阳</city>
        <city>定西</city>
        <city>陇南</city>
        <city>临夏</city>
        <city>甘南</city>
    </province>
    <province name="青海">
        <city>西宁</city>
        <city>海东</city>
        <city>海北</city>
        <city>黄南</city>
        <city>海南</city>
        <city>果洛</city>
        <city>玉树</city>
        <city>海西</city>
    </province>
    <province name="宁夏">
        <city>银川</city>
        <city>石嘴山</city>
        <city>吴忠</city>
        <city>固原</city>
        <city>中卫</city>
    </province>
    <province name="新疆">
        <city>乌鲁木齐</city>
        <city>克拉玛依</city>
        <city>吐鲁番</city>
        <city>哈密</city>
        <city>昌吉</city>
        <city>博尔塔拉</city>
        <city>巴音郭楞</city>
        <city>阿克苏</city>
        <city>克孜勒苏</city>
        <city>喀什</city>
        <city>和田</city>
        <city>伊犁</city>
        <city>塔城</city>
        <city>阿勒泰</city>
        <city>石河子</city>
        <city>阿拉尔</city>
        <city>图木舒克</city>
        <city>五家渠</city>
    </province>
    <province name="香港">
        <city>香港</city>
    </province>
    <province name="澳门">
        <city>澳门</city>
    </province>
    <province name="台湾">
        <city>台湾</city>
    </province>

</china>

serlvet 文件文件

package cn.itcast.servlet;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.junit.Test;

import cn.ulcmdtf.utils.Dom4jUtils;

/**
 * Servlet implementation class ajax03Servlet
 */
@WebServlet("/ajax03")
public class ajax03Servlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/xml;charset=utf-8");
        String path = "D:\\eclipse-workspace\\01-ajax\\src\\main\\java\\cn\\itcast\\servlet\\china.xml";
        //得到document
        Document document = Dom4jUtils.getDocument(path);
        System.out.println(document);
        List<Attribute> arrList = document.selectNodes("//province/@name");//@表示属性
        //System.out.println(arrList);
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < arrList.size() ; i++) {
            sb.append(arrList.get(i).getValue());
            if (i < arrList.size() - 1) {
                sb.append(",");
            }
        }
        response.getWriter().print(sb);

    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/xml;charset=utf-8");
        String path = "D:\\eclipse-workspace\\01-ajax\\src\\main\\java\\cn\\itcast\\servlet\\china.xml";
        //得到document
        Document document = Dom4jUtils.getDocument(path);

        String pname = request.getParameter("pname");
        //System.out.println(pname);
        Element proEle = (Element) document.selectSingleNode("//province[@name='"+pname+"']");
        //System.out.println(proEle);
        String xmlStr = proEle.asXML();
        //System.out.println(xmlStr);
        response.getWriter().print(xmlStr); 
    }

}

js文件

window.onload = function() {
    /**
     * 获取省份的方法
     */
    var xmlHttp = getXmlHttpRequest();

    xmlHttp.open("get","../ajax03",true);

    xmlHttp.send(null);

    xmlHttp.onreadystatechange = function() {

        if(xmlHttp.readyState == 4 && xmlHttp.status == 200){

            var text = xmlHttp.responseText;

            var arr = text.split(",");

            for(var i = 0;i < arr.length;i++){
                //创建指定名称的元素
                var option = document.createElement("option");

                option.value = arr[i];//设置实际的值

                var textNode = document.createTextNode(arr[i]);//创建文本节点

                option.appendChild(textNode);//添加文本子节点

                document.getElementById("p").appendChild(option);
            }
        }
    }
/*------------------------------------------------------------------------------------*/    
    /**
     * 获取城市的方法
     */
    document.getElementById("p").onchange = function(){

        xmlHttp.open("post", "../ajax03", true);

        xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

        var pname = document.getElementById("p").value;

        console.log(pname);//打印数据
        xmlHttp.send("pname="+pname);

        xmlHttp.onreadystatechange = function(){

            if(xmlHttp.readyState == 4 && xmlHttp.status == 200){

                var citySelect = document.getElementById("city");

                var optionEleList = citySelect.getElementsByTagName("option");

                while(optionEleList.length > 1){

                    citySelect.removeChild(optionEleList[1]);//总是删除第一个下标,因为删除1了下面的会顶上来
                }

                var doc = xmlHttp.responseXML;
                //查找所有   可返回带有指定标签名的对象的集合。
                var cityElementList = doc.getElementsByTagName("city");

                console.log(cityElementList);//打印
                //遍历获取城市
                for(var i=0;i<cityElementList.length;i++){
                    //得到所有城市
                    var cityXmlValue = cityElementList[i].firstChild.nodeValue;

                    console.log(cityXmlValue);//打印
                    //创建option 元素
                    var option = document.createElement("option");
                    //设置option元素的value <option value="">
                    option.setAttribute("value",cityXmlValue);
                    //创建文本元素设置值
                    var text = document.createTextNode(cityXmlValue);
                    //将文本节点添加到option中
                    option.appendChild(text);
                    //得到select 节点 id : city
                    var cityElement = document.getElementById("city");
                    //将option节点添加到name为city的select  下拉选项中 
                    cityElement.appendChild(option);

                }
            }
        }
    }
}

jsp 文件

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>省市联动</title>
<script type="text/javascript" src="city.js"></script>
<script type="text/javascript" src="../ajax.js"></script>


</head>
<body>

    <h1 id="h1"></h1>
    <h1>省市联动</h1>
    <select name="province" id="p" onchange="selectCity()">
        <option>===请选择省===</option>
    </select> &nbsp;&nbsp;&nbsp;&nbsp;
    <select name="city" id="city">
        <option>===请选择市===</option>
    </select>

</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值