解析XML文件

【XML文件如下】

<?xml version="1.0" encoding="GBK"?> 
<ROOT>
<SYSTEM>
<SYSTEM_ID><![CDATA[test]]></SYSTEM_ID>
<CHECK_CODE><![CDATA[test]]></CHECK_CODE>
<SYS_ORGAN_ID><![CDATA[11]]></SYS_ORGAN_ID>
</SYSTEM>
<REF>
<HOST_INFO_ID><![CDATA[22]]></HOST_INFO_ID>
<GUEST_INFO_ID><![CDATA[33]]></GUEST_INFO_ID>
</REF> 
<INFOEXTERNALFILES>
<FILE>
<FILE_NAME><![CDATA[1111]]></FILE_NAME>
<FILE_URL><![CDATA[22222]]></FILE_URL>
</FILE>
<FILE>
<FILE_NAME><![CDATA[33333]]></FILE_NAME>
<FILE_URL><![CDATA[444444]]></FILE_URL>
</FILE>
</INFOEXTERNALFILES>
<ATTACHMENTS> 
<ATTACHMENT>
<ATCH_ID><![CDATA[304457]]></ATCH_ID>
<ATCH_NAME><![CDATA[d0c8a786c9177f3e82bb1f4a71cf3bc79e3d56ee]]></ATCH_NAME>
<FILE_NAME><![CDATA[d0c8a786c9177f3e82bb1f4a71cf3bc79e3d56ee.jpg]]></FILE_NAME>
</ATTACHMENT>
<ATTACHMENT>
<ATCH_ID><![CDATA[304457]]></ATCH_ID>
<ATCH_NAME><![CDATA[c2fdfc039245d688205f5ee3a5c27d1ed21b241c]]></ATCH_NAME>
<FILE_NAME><![CDATA[c2fdfc039245d688205f5ee3a5c27d1ed21b241c.jpg]]></FILE_NAME>
</ATTACHMENT>
</ATTACHMENTS>
</ROOT>

public class ResolveParamXml {

    public void getParamXml(String filename, HashMap hm){
        SAXReader saxReader = new SAXReader();
        Document doc = null;
        try {
            doc = saxReader.read(new File(filename));
            Element root = doc.getRootElement();

            int num = -1;
            int fcont = 0;
            int acont = 0;
            Iterator iterator = root.elementIterator();
            while(iterator.hasNext()){
                Element elment =(Element) iterator.next();
                Iterator it = elment.elementIterator();
                while(it.hasNext()){
                    Element element = (Element)it.next();
                    if(element.getName().equals("FILE")){
                        fcont++;
                        //System.out.println(fcont+" :file 标签出现的次数");
                    }
                    if(element.getName().equals("ATTACHMENT")){
                        acont++;
                        //System.out.println(acont+" :attachment 标签出现的次数");
                    }
                    hm.put(element.getName(), element.getText());

                    Iterator itor = element.elementIterator();
                    if(itor.hasNext()){
                       num++;
                    }
                    while(itor.hasNext()){

                        Element e = (Element)itor.next();
                        System.out.println(e.getName()+num+" : "+e.getText());
                        hm.put(e.getName()+num,e.getText());
                    }
                }
            }
             hm.put("FILE",String.valueOf(fcont));
             hm.put("ATTACHMENT",String.valueOf(acont));
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

    }
    public static void main(String [] args){
        ResolveParamXml rpx = new ResolveParamXml();
        HashMap hashMap = new HashMap();
        rpx.getParamXml("D:\\asdf.xml", hashMap);
        System.out.println(hashMap.get("SYSTEM_ID"));
        System.out.println(hashMap.get("CHECK_CODE"));
        System.out.println(hashMap.get("SYS_ORGAN_ID"));
        System.out.println(hashMap.get("HOST_INFO_ID"));
        System.out.println(hashMap.get("GUEST_INFO_ID"));
        int fcont = Integer.parseInt(hashMap.get("FILE").toString());
        int acont = Integer.parseInt(hashMap.get("ATTACHMENT").toString());
        for (int i = 0; i < fcont; i++) {
            System.out.println(hashMap.get("FILE_NAME" + i));
            System.out.println(hashMap.get("FILE_URL" + i));
        }
        for (int i = fcont; i < acont+fcont; i+=1) {
            System.out.println(hashMap.get("ATCH_ID"+i));
            System.out.println(hashMap.get("ATCH_NAME"+i));
            System.out.println(hashMap.get("FILE_NAME"+i));
        }
    }
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值