zoukankan      html  css  js  c++  java
  • Java_数据交换_dom4j_01_解析xml

    1.说明

    详细原理以后再研究,先将例子存着

    2.代码

    2.1 xml内容

    <?xml version="1.0" encoding="UTF-8"?>
    <weixin:Qi-config xmlns:weixin="aurora.plugin.weixin">
        <instnces>    
                <weixin:Qiyeance token="wei胜多负少xin" corpId=防守打法b5a4889c1e12" encodingAESKey="z3s7Tgh3mknc2电饭锅w5MevwYocgmEL1Gtw" appName="规定发给c"/>
        </instnces>
        <tokenTasks>
        <weixin:Qiyask groupname="hec" corpId="wwa4889c1e12" secrect="kOpZjWDSmdhghOB7fydfFW6m0-sSMOQYV_Cko" />
        </tokenTasks>
    </weixin:Qi-config>
    View Code

    2.2java 代码

    package com.ray.test;
    
    import java.io.File;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import org.dom4j.Attribute;
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    import org.junit.Test;
    
    public class TestParseXMl {
        Map<String, Map<String,String>> weiXinConfigMap=new HashMap<String, Map<String,String>>();
        /**
         * 获取文件的document对象,然后获取对应的根节点   
         * @throws Exception
         */
        @Test  
        public void testGetRoot() throws Exception{  
            SAXReader sax=new SAXReader();//创建一个SAXReader对象  
            //File xmlFile=new File("src/main/java/aurora/plugin/weixin/qiyewexin.config");//根据指定的路径创建file对象  
            File xmlFile=new File("src/com/ray/test/qiyewexin.config");//根据指定的路径创建file对象  
            Document document=sax.read(xmlFile);//获取document对象,如果文档无节点,则会抛出Exception提前结束  
            Element root=document.getRootElement();//获取根节点  
            this.getNodes(root);//从根节点开始遍历所有节点  
            
            for(String key:weiXinConfigMap.keySet()){
                System.out.println("节点名字:key"+key);
                Map<String ,String> attMap=weiXinConfigMap.get(key);
                for(String key2:attMap.keySet()){
                    System.out.println("属性名:"+key2+ ",属性值:"+attMap.get(key2));
                }
            }
    
        }  
    
        /**
         * 从指定节点开始,递归遍历所有子节点   
         * @param node
         */
        public void getNodes(Element node ){  
            System.out.println("--------------------");  
    
            //当前节点的名称、文本内容和属性  
            System.out.println("当前节点名称:"+node.getName());//当前节点名称  
            System.out.println("当前节点的内容:"+node.getTextTrim());//当前节点名称  
            List<Attribute> listAttr=node.attributes();//当前节点的所有属性的list  
            Map<String,String> attrMap=new HashMap<String,String>();
    
            for(Attribute attr:listAttr){//遍历当前节点的所有属性  
                String name=attr.getName();//属性名称  
                String value=attr.getValue();//属性的值  
                System.out.println("属性名称:"+name+"属性值:"+value);  
                //将微信配置属性存入map
                if("QiyeWeixin-instance".equals(node.getName())||"QiyeToken-task".equals(node.getName())){
                    attrMap.put(name, value);
                }
            }  
    
            //递归遍历当前节点所有的子节点  
            List<Element> listElement=node.elements();//所有一级子节点的list  
            for(Element e:listElement){//遍历所有一级子节点  
                this.getNodes(e);//递归  
            }  
    
            if("QiyeWeixin-instance".equals(node.getName())||"QiyeToken-task".equals(node.getName())){
                weiXinConfigMap.put(node.getName(), attrMap);
            }
        }  
    
    
    
        /**
         * 从指定节点开始,递归遍历所有子节点   
         * @param node
         */
        public void getNodes0(Element node){  
            System.out.println("--------------------");  
    
            //当前节点的名称、文本内容和属性  
            System.out.println("当前节点名称:"+node.getName());//当前节点名称  
            System.out.println("当前节点的内容:"+node.getTextTrim());//当前节点名称  
            List<Attribute> listAttr=node.attributes();//当前节点的所有属性的list  
            for(Attribute attr:listAttr){//遍历当前节点的所有属性  
                String name=attr.getName();//属性名称  
                String value=attr.getValue();//属性的值  
                System.out.println("属性名称:"+name+"属性值:"+value);  
            }  
    
            //递归遍历当前节点所有的子节点  
            List<Element> listElement=node.elements();//所有一级子节点的list  
            for(Element e:listElement){//遍历所有一级子节点  
                this.getNodes(e);//递归  
            }  
        }  
    
    
    }
    View Code
  • 相关阅读:
    python搭建开发环境
    django初探
    linux下安装Composer
    文件记录追加 file_put_content
    自定义导出表格
    异步处理接口 fsockopen
    appcache checking update
    js pix
    Event Aggregator
    ko list and css gradient
  • 原文地址:https://www.cnblogs.com/shirui/p/7493826.html
Copyright © 2011-2022 走看看