xml解析

创建一个Java类测试下,直接f复制下面代码到类里

*************************类开始************************************

package xml;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

public class TestXml {
    public static void main(String[] args) {
        String xml = "<?xml version='1.0' encoding='UTF-8'?>"+
                "<cenode0 xmlns:ns0='http://test.com/'>"+
                   "<node1></node1>"+
                   "<node2>"+
                       "<node3>测试数据</node3>"+
                       "<node4>000110011</node4>"+
                       "<node5>"+
                             "<node7>ces3</node7>"+
                             "<node8>ces4</node8>"+
                       "</node5>"+
                       "<node6>"+ 
                          "<node9>ces1</node9>"+
                          "<node10>ces2</node10>"+
                       "</node6>"+
                   "</node2>"+
                "</cenode0>";
        
        Map map = test2(xml);
        System.out.println(map);
    }    
    
    
    public static Map test2(String xml){
        
        Document doc = null;
        Map m = new HashMap();
        // 下面的是通过解析xml字符串的
        try {
            doc = DocumentHelper.parseText(xml); // 将字符串转为XML
            Element node = doc.getRootElement(); // 获取根节点
            List<Element> listElement=node.elements();//所有一级子节点的list
            for(Element e:listElement){//遍历所有一级子节点
                m.put(e.getName(), initnode(e));
            }

            System.out.println(m);
            return m;
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return m;
    }
    
    
    public static Object initnode(Element element){
        List<Element> listElement=element.elements();//所有一级子节点的list
        if(listElement!=null&&listElement.size()>0){
            Map m = new HashMap();
            for(Element e:listElement){//遍历所有一级子节点
                m.put(e.getName(), initnode(e));
            }
            return m;
        }else{
            return element.getStringValue().toString();
        }
    }
}

*************************类结束************************************

结果 :   {node1=, node2={node4=000110011, node5={node8=ces4, node7=ces3}, node3=测试数据, node6={node10=ces2, node9=ces1}}}

原文地址:https://www.cnblogs.com/xueershewang/p/15508124.html