package com.weiqi.mis;

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

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

public class XmlUtil {

    /**
     * xml 转 map
     * @param soap
     * @return
     */
    public static Map xml2Map(String soap) {

        Map<String, Object> map = new HashMap<String, Object>();
        Document doc = null;// 报文转成doc对象
        try {
            doc = DocumentHelper.parseText(soap);
        } catch (DocumentException e) {
            e.printStackTrace();
            return map;
        }
        Element root = doc.getRootElement();// 获取根元素，准备递归解析这个XML树
        getCode(root, map);
        return map;

    }

    public static void getCode(Element root, Map<String, Object> map) {
        if (root.elements() != null) {
            List<Element> list = root.elements();// 如果当前跟节点有子节点，找到子节点
            for (Element e : list) {// 遍历每个节点
                if (e.elements().size() > 0) {
                    getCode(e, map);// 当前节点不为空的话，递归遍历子节点；
                }
                if (e.elements().size() == 0) {
                    map.put(e.getName(), e.getTextTrim());
                } // 如果为叶子节点，那么直接把名字和值放入map
            }
        }
    }
}
