java将XML数据转换成Map

package com.isoftstone.pcis.tool;

import java.io.StringReader;
import java.util.*;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;

public class XmlTool {
 public static Map<String, Object> Xml2Map(String xml)  
         throws DocumentException {
    if(xml==null||"".equals(xml)){
   return null;
  }
    SAXReader reader = new SAXReader();
    SAXReader saxReader = new SAXReader();
    StringReader sr = new StringReader(xml);  
    Document document = reader.read(sr);  
    OutputFormat format = OutputFormat.createPrettyPrint();  
    format.setEncoding("UTF-8");  
    Element root = document.getRootElement();  
    return Dom2Map(root);  
 } 
 private static Map Dom2Map(Element e) {  
      Map map = new HashMap();   
      List list = e.elements();  
      if (list.size() > 0) {  
          for (int i = 0; i < list.size(); i++) {  
              Element iter = (Element) list.get(i);  
              List mapList = new ArrayList();  
  
             if (iter.elements().size() > 0) {  
                  Map m = Dom2Map(iter);  
                  if (map.get(iter.getName()) != null) {  
                      Object obj = map.get(iter.getName());  
                      if (!obj.getClass().getName().equals(  
                              "java.util.ArrayList")) {  
                          mapList = new ArrayList();  
                          mapList.add(obj);  
                         mapList.add(m);  
                      }  
                      if (obj.getClass().getName().equals(  
                             "java.util.ArrayList")) {  
                          mapList = (List) obj;  
                          mapList.add(m);  
                      }  
                      map.put(iter.getName(), mapList);  
                  } else 
                      map.put(iter.getName(), m);  
              } else {  
                  if (map.get(iter.getName()) != null) {  
                      Object obj = map.get(iter.getName());  
                      if (!obj.getClass().getName().equals(  
                              "java.util.ArrayList")) {  
                          mapList = new ArrayList();  
                          mapList.add(obj);  
                          mapList.add(iter.getText());  
                     }  
                      if (obj.getClass().getName().equals(  
                              "java.util.ArrayList")) {  
                          mapList = (List) obj;  
                          mapList.add(iter.getText());  
                      }  
                      map.put(iter.getName(), mapList);  
                  } else 
                     map.put(iter.getName(), iter.getText());  
              }  
          }  
      } else 
          map.put(e.getName(), e.getText());  
      return map;  
  } 
   public static void main(String[] args) {
    String xmlstr = "<?xml version=\"1.0\"?>"+

  "<font>"+
  
        "  <name><a></a></name>"+
             
         " <size>36</size>"+
  
  "</font>";
   try {
  Map map =  Xml2Map(xmlstr);
  Map<String, Object> baseMap = new HashMap<String, Object>();
  Map<String, String> mappingMap = new HashMap<String, String>();
  mappingMap.put("N_FAC_MIN", "factormin");
  mappingMap.put("N_FAC_MAX", "factormin");
  mappingMap.put("N_HOPE_PRM", "hopeprm");
  mappingMap.put("N_HOPE_RATE", "hoperate");
  mappingMap.put("N_FIT_RATE", "fittingrate");
  mappingMap.put("N_FIT_PRM", "fittingprm");
  baseMap = getNewMapWithMapKey(mappingMap,map);
   
  Map<String, String> cvrgMappingMap = new HashMap<String, String>();
  cvrgMappingMap.put("C_CVRG_NO", "ccvrgno");
  cvrgMappingMap.put("N_RATE_FAC_MUL", "nratefactormul");
  cvrgMappingMap.put("N_RISK_PRM", "npureriskpremium");
  cvrgMappingMap.put("N_BAS_PRM", "nbasepremium");
  cvrgMappingMap.put("N_ACTUARY_PRM", "npremium");
  Map<String, Object> cvrgDataMap = (Map)map.get("apInfos");
  List<Map<String, Object>> cvrgApList = new ArrayList<Map<String,Object>>();
  if(cvrgDataMap!=null){
   List<Map> cvrgFacData= (List<Map>)cvrgDataMap.get("apInfo");
   Map<String, Object> ApMap = new HashMap<String, Object>();
   for (int i = 0; i < cvrgFacData.size(); i++) {
    ApMap = getNewMapWithMapKey(cvrgMappingMap,cvrgFacData.get(i));
    cvrgApList.add(ApMap);
   }
  }
  
  Map<String, String> facMappingMap = new HashMap<String, String>();
  facMappingMap.put("C_VAL_CDE", "code");
  facMappingMap.put("N_VAL_MIN", "min");
  facMappingMap.put("N_VAL_MAX", "max");
  facMappingMap.put("N_VAL_NUM", "value");
  Map<String, Object> facDataMap = (Map)map.get("factorInfos");
  List<Map<String, Object>> facList = new ArrayList<Map<String,Object>>();
  if(facDataMap!=null){
   List<Map> facData= (List<Map>)facDataMap.get("factorInfo");
   Map<String, Object> facMap = new HashMap<String, Object>();
   for (int i = 0; i < facData.size(); i++) {
    facMap = getNewMapWithMapKey(facMappingMap,facData.get(i));
    facList.add(facMap);
   }
  }
   System.out.println(11);
  
 } catch (DocumentException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
  }
    
   //**************************************************************************
   
   public static Map<String, Object> getNewMapWithMapKey(Map<String, String> mappingMap,Map<String, Object>dataMap){
    Map<String, Object> returnMap = new HashMap<String, Object>();
    Set keySet = mappingMap.keySet();
    Iterator iterator = keySet.iterator();
    while(iterator.hasNext()){
   String key = iterator.next()+"";
   returnMap.put(key, dataMap.get(mappingMap.get(key))); 
    }
    return returnMap;
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值