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结构改变,这种方式修改起来也方便。
仅限自己记录。



