1. 程式人生 > >XML字串轉Map

XML字串轉Map

/**
 * 
 * 將xml檔案轉換成Map物件
 */
public class XmlToMap {


    /**
     * 獲取xml檔案轉換為的Map物件
     *
     * @param xmlPath xml檔案路徑
     * @param keyToList 指定節點名稱轉list物件
     * @return Map
     */
    public static Map getPath2Map(String xmlPath, String keyToList) {
        try {
            SAXBuilder builder = new SAXBuilder();
            Document doc = builder.build(new File(xmlPath));
            Element root = doc.getRootElement();
            Map result = new HashMap();
            getElement(root, result, keyToList);
            return result;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


    /**
     * xml字串轉換Map物件
     * @param xmlStr
     * @param keyToList 指定節點名稱轉list物件
     * @return Map
     */
    public static Map getStrXml2Map(String xmlStr, String keyToList) {
        try {
            Document doc = string2Doc(xmlStr);
            Element root = doc.getRootElement();
            Map result = new HashMap();
            getElement(root, result, keyToList);
            return result;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


    /**
     * String轉換為Document物件
     *
     * @paramxml字串
     * @returnDocument物件
     */
    private static Document string2Doc(String xmlStr) throws Exception {
        java.io.Reader in = new StringReader(xmlStr);
        Document doc = (new SAXBuilder()).build(in);
        return doc;
    }




    /**
     * 將Map物件轉換為xml字串
     *
     * @param m
     * @param root 根節點名稱
     * @return String
     */
    public static String getMap2StrXml(Map m, String root) {
        StringBuffer xml = new StringBuffer(m.size() * 3);
        xml.append("<?xml version=\"1.0\" encoding=\"GBK\" standalone=\"yes\" ?>");
        xml.append("<" + root + ">");
        xml.append(getElementStringXml(m));
        xml.append("</" + root + ">");
        return xml.toString();
    }


    /**
     * 處理xml節點轉Map.Entry
     *
     * @param e
     * @param m
     * @param keyToList 指定節點名稱轉list物件
     */
    private static void getElement(Element e, Map m, String keyToList) {
        List<Element> listElement = e.getChildren();
        for (Element a1 : listElement) {
            String ename = a1.getName();
            Object value = null;
            if (a1.getChildren().size() > 0) {
                Map emap = new HashMap();
                getElement(a1, emap, keyToList);
                value = emap;
            } else {
                value = a1.getValue();
            }
            if (m.containsKey(ename) || ename.equals(keyToList)) {
                if (m.get(ename) instanceof List) {
                    ((List) m.get(ename)).add(value);
                } else {
                    List list = new ArrayList(10);
                    if(m.get(ename) != null){
                        list.add(m.get(ename));
                    }
                    list.add(value);
                    m.put(ename, list);
                }
            } else {
                m.put(ename, value);
            }
        }
    }


    /**
     * 處理map轉換字串
     *
     * @param m
     * @return
     */
    private static String getElementStringXml(Map<String, Object> m) {
        StringBuffer content = new StringBuffer(m.size() * 3);
        for (Iterator<Map.Entry<String, Object>> iter = m.entrySet().iterator(); iter.hasNext(); ) {
            Map.Entry<String, Object> entry = iter.next();
            Object value = entry.getValue();
            if (value instanceof List) {
                content.append(getElementListStringXml((List) value, entry.getKey()));
            } else {
                content.append("<" + entry.getKey() + ">");
                if (value instanceof Map) {
                    content.append(getElementStringXml((Map) value));
                } else {
                    content.append(value==null?"":value);
                }
                content.append("</" + entry.getKey() + ">");
            }
        }
        return content.toString();
    }


    /**
     * 處理list轉換xml字串
     *
     * @param list
     * @param key
     * @return
     */
    private static String getElementListStringXml(List list, String key) {
        StringBuffer content = new StringBuffer(list.size() * 30);
        for (Object value : list) {
            content.append("<" + key + ">");
            if (value instanceof Map) {
                content.append(getElementStringXml((Map) value));
            } else {
                content.append(value.toString());
            }
            content.append("</" + key + ">");
        }
        return content.toString();
    }


/**
* map轉list
* @param map
* @return
*/
public static List  map2List(Map map) {
List list = new ArrayList();
Iterator iter = map.entrySet().iterator();  //獲得map的Iterator
while(iter.hasNext()) {
Entry entry = (Entry)iter.next();
list.add(entry.getValue());
}
return list;
}


}

相關推薦

XML字串Map

/**  *   * 將xml檔案轉換成Map物件  */ public class XmlToMap {     /**      * 獲取xml檔案轉換為的Map物件      *      * @param xmlPath xml檔案路徑      * @param

XML字串MAP格式互

 /**      * XML格式字串轉換為Map      *      * @param strXML XML字串      * @return XML資料轉換後的Map      * @thro

Fastjson 序列化,反序列化Map物件排序問題(字串mapmap字串

背景 記錄專案中遇到的 關於fastjson jsonobject轉string亂序,string轉jsonObject亂序問題的解決方案 fastJson issues 問題來源描述參見: https://github.com/alibaba/fastjson/issues/359

Map.toString 的字串Map

   public static void main(String[] args) {       String str="{attach=  sfsd  , sub_mch_id=10000100, time_end=20140903131540, openid=oUpF8

XML字串實體類

1.方法 //傳入xml字串 返回的實體類 private ReceiveXmlEntity XMLToEntity(String strXml) throws IOException {

Golang學習筆記--xml字串json

Go語言中struct和xml,struct和json之間的互相轉換比較容易實現,那麼xml直接轉json 該如何實現?其本質還是通過struct間接轉換的。讓我們直接看下程式碼: package main import ( "encoding/json" "enc

Json格式字串Map

public class JsonToMapTest01 { public static void main(String[] args){ String str = "{\"0\":\"zhangsan\",\"1\":\"l

xml字串與json互

首先需要的maven依賴: <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20180813&

[ java 工具類] xml字串解析成Map(DOM解析)

package com.tencent.jungle.wechat.util; import com.google.inject.Singleton; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeL

StringXMLMap

public class TestXml {     public static void main(String[] args){         String msg = "<?xml version=\"1.0\" en

JAVA利用dom4j解析xmlmap

dom4j maven依賴 <!-- https://mvnrepository.com/artifact/dom4j/dom4j --> <dependency> <groupId>dom4j</groupI

南瓜先生~xml字串和javaBean互

1.寫一個工具類: public static String convertToXml(Object obj, String encoding) { String result = null; try { JAXBContext

JSON字串javabean-net.sf.ezmorph.bean.MorphDynaBean cannot be cast to java.util.Map

會報錯:MorphDynaBean cannot be cast to java.util.Map     在JSONObject.toBean的時候如果轉換的類中有集合,可以先定義Map<String, Class> classMap = new Hash

[]jackson json字串map、java物件的轉換例子

ackson框架 json字串、map、java物件的轉換例子 先下載框架jar包: 下面是一些例子: package jackson; import java.io.File; import java.io.FileInputStream; import java.

org.w3c.dom document 和xml 字串

package com.mymhotel.opera; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; im

dom4j Map XML

package com.wop.util; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java

fastJson json字串List以及Map

       fastJson是阿里出品的json處理外掛,比較輕量、易用,國內很多公司都應用於生產系統中。一般的Web應用程式為了更好的使用者體驗,在頁面中使用了ajax技術,非同步載入資料,或者提

java xmlmap mapxml 帶屬性

參考效果:xml轉json java xml轉map Java程式碼   package xml2map;   import java.io.File;   import java.io.IOException;   import java.io.Strin

js對象所有屬性Map

pre urn name bsp input run == data prop 1 <!DOCTYPE html> 2 <html lang="zh_CN"> 3 <head> 4 <meta charse

golang structmap

link data eof ref for pac cpp main ring struct轉map package main import ( "fmt" "reflect" "time" ) type User struct { Id in