1.**首先先将xml文件放入java工程中。
我放入的是resources文件夹中。
2.xml结构:本次解析的是全国省市xml文件,这种不会变的数据一般不用储存数据库中。
北京市 110000
北京市 110000
东城区 110101
西城区 110102
朝阳区 110105
丰台区 110106
石景山区 110107
海淀区 110108
门头沟区 110109
房山区 110111
通州区 110112
顺义区 110113
昌平区 110114
大兴区 110115
怀柔区 110116
平谷区 110117
密云区 110118
延庆区 110119
我这里只解析到省跟市,区县没有用到
java代码
public ListgetProvinceInfo(String code) throws documentException { SAXReader reader = new SAXReader(); InputStream in = this.getClass().getResourceAsStream("/CityData.xml"); document doc = reader.read(in); Element element = doc.getRootElement();//所有xml标签对象 Element element1; Element element2;//所有省级标签对象 Element element3; Element element4;//城市标签对象 List provinceInfoList = new ArrayList<>();//省级数据集合 Iterator jzProvince = element.elementIterator("JzProvinceList");//获取父级标签集合 while (jzProvince.hasNext()) { element1 = (Element) jzProvince.next(); //获取所有省级标签集合 遍历 Iterator jzProvince1 = element1.elementIterator("jzProvince"); while (jzProvince1.hasNext()) { element2 = (Element) jzProvince1.next(); ProvinceInfo provinceInfo = new ProvinceInfo(); String codeT = element2.elementText("code"); //获取该省的城市 if (StringUtils.isNotBlank(code)) { if (codeT.equals(code)) { element3 = element2.element("jzCityList");//城市父级标签 Iterator jzCity = element3.elementIterator("jzCity");//城市标签集合 while (jzCity.hasNext()) { element4 = (Element) jzCity.next(); provinceInfo = new ProvinceInfo(); provinceInfo.setText(element4.elementText("text")); provinceInfo.setCode(element4.elementText("code")); provinceInfoList.add(provinceInfo); } } } else { provinceInfo.setText(element2.elementText("text")); provinceInfo.setCode(codeT); provinceInfoList.add(provinceInfo); } } } return provinceInfoList; }
我使用的document 方法,这种方式看似里面的结构复杂,但是只要理清层级关系,还是比较好理解的。而且解释xml结构改变,这种方式修改起来也方便。
仅限自己记录。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)