java 解析xml文件

java 解析xml文件,第1张

java 解析xml文件

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5434915.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)