Xml转Entity转Map

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import com.alibaba.fastjson.JSONObject;

/**

  • 功能:通过属性文件处理XML报文

  • @author Luoqirui

  • @version 1.0

  • @date 2019-3-11
    */
    public class XMLToMap {

    public Map getXML(String requestXml) {
    Map map = new HashMap();
    // 将字符串转为XML
    Document doc;
    try {
    doc = DocumentHelper.parseText(requestXml);
    // 获取根节点
    Element rootElm = doc.getRootElement();// 从root根节点获取请求报文
    XMLToMap xmlIntoMap = new XMLToMap();
    map = xmlIntoMap.parseXML(rootElm, new HashMap());
    } catch (DocumentException e) {
    e.printStackTrace();
    }

     return map;
    

    }

    /**

    • 将xml解析成map键值对 <功能详细描述>

    • @param ele

    •        需要解析的xml对象
      
    • @param map

    •        入参为空,用于内部迭代循环使用
      
    • @return

    • @see [类、类#方法、类#成员]
      */
      private Map parseXML(Element ele, Map map) {

      for (Iterator i = ele.elementIterator(); i.hasNext();) {
      Element node = (Element) i.next();
      // System.out.println("parseXML node name:" + node.getName());
      if (node.attributes() != null && node.attributes().size() > 0) {
      for (Iterator j = node.attributeIterator(); j.hasNext();) {
      Attribute item = (Attribute) j.next();

               map.put(item.getName(), item.getValue());
           }
       }
       if (node.getText().length() > 0) {
           map.put(node.getName(), node.getText());
       }
       if (node.elementIterator().hasNext()) {
           parseXML(node, map);
       }
      

      }
      return map;
      }

    /**

    • 将Map转换为对象
    • @param paramMap
    • @param cls
    • @return
      */
      public static T parseMap2Object(Map paramMap, Class cls) {
      return JSONObject.parseObject(JSONObject.toJSONString(paramMap), cls);
      }

}

你可能感兴趣的:(Xml转Entity转Map)