程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> xml-Map 和 XML 相互轉換(JAVA)

xml-Map 和 XML 相互轉換(JAVA)

編輯:編程綜合問答
Map 和 XML 相互轉換(JAVA)

XML:DE轉換成Map.
再幫忙提供一個逆轉的方法。多謝大家。
屬性別丟啊

自己弄出來 了。csdn界面現在換的都不知道該點哪裡。真不習慣。

最佳回答:


package cn.jsfund.util;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import org.apache.commons.collections.map.LinkedMap;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import cn.jsfund.web.Validation;

/**

  • XML 工具類
  • @author zhaoxb
  • @time 2013-07-24
    */
    public class XMLUtil {

    private static final String SEPARATOR = " ";
    /**

    • 把XML字符串轉換成MAP 聲明:這個類還不完善, 不能自動取得主要報文體中的內容。得自己從map中取出報文體。示例 Map FOAReq =
    • map.get("FOAReq")
    • @param xmlStr
    • @return map
      */
      public static Map xml2Map(String xmlStr) {
      Map map = new LinkedHashMap();
      try {
      Document doc;
      doc = DocumentHelper.parseText(xmlStr);
      Element rootElement = doc.getRootElement();
      xml2Map(rootElement, map);

      return map;
      

      } catch (DocumentException e) {
      e.printStackTrace();
      }

      return null;
      }

    /**

    • 遞歸方法 獲得節點的值,如果某節點下還有子節點,則些key對應的value也是一個map
    • @param element
    • @param map */ private static void xml2Map(Element element, Map map) { Iterator i = element.elementIterator(); String key = element.getName(); Map childMap = new LinkedMap(); Iterator i2 = element.attributeIterator(); if (!i.hasNext()) { String value = element.getTextTrim(); map.put(key, value); } else { // Map childMap = new LinkedHashMap(); while (i.hasNext()) { map.put(key, childMap); Element childElement = (Element) i.next(); xml2Map(childElement, childMap); } } if (i2.hasNext()) { Map attrMap = new LinkedMap(); while (i2.hasNext()) { Attribute attribute = (Attribute) i2.next(); String attrName = attribute.getName(); String attrValue = attribute.getValue(); attrMap.put(attrName, attrValue); } map.put("@" + key, attrMap); } }

    /**

    • map轉xml字符串
    • @param map
    • 所要轉換的map
    • @param businessName
    • 業務名字.比如 開戶是FOARes
    • @return String 拼接的 */ public static String map2Xml(Map map) { StringBuffer sbf = new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); map2Xml(sbf, map); return sbf.toString(); }

    /**

    • 遞歸方法將map裡的鍵和值拼接成xml字符串
    • @param sbf
    • @param map */

    private static void map2Xml(StringBuffer sbf, Map map) {
    Set s = map.entrySet();
    Iterator i = s.iterator();
    StringBuffer childSbf = new StringBuffer();
    while(i.hasNext()){
    Entry e = (Entry) i.next();
    String key = (String) e.getKey();
    if(key.indexOf("@") >= 0){
    continue;
    }
    if(key != null){
    childSbf.append("<").append(key);
    }
    String attr = "@" + key;
    Map attrMap = (Map) map.get(attr);
    if(null != attrMap){
    Set attrSet = attrMap.entrySet();
    Iterator attrIterator = attrSet.iterator();
    while(attrIterator.hasNext()){
    Entry attrEntry = (Entry) attrIterator.next();
    String attrKey = (String) attrEntry.getKey();
    String attrValue = (String) attrEntry.getValue();
    childSbf.append(SEPARATOR).append(attrKey).append("=").append("\"").append(attrValue).append("\"");
    }
    }
    childSbf.append(">");
    Object value = e.getValue();
    if(value instanceof List){
    List list = (List) value;
    for(int j = 0; j Map valueMap = (Map) list.get(j);
    map2Xml(childSbf,valueMap);
    }
    }else if(value instanceof Map){
    Map valueMap = (Map) value;
    map2Xml(childSbf, valueMap);
    }else{
    if(null != value){
    childSbf.append(value);
    }else{
    childSbf.append("");
    }
    }
    if(key != null){
    childSbf.append("").append(key).append(">");
    }
    }
    sbf.append(childSbf);

    }

    public static void main(String[] args) {
    String xmlStr6 = "";
    Map map6 = xml2Map(xmlStr6);
    System.out.println(map6.toString());

    String result = map2Xml(map6);
    System.out.println(result);
    

    }
    }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved