首頁 後端開發 XML/RSS教程 XML字元轉Map工具類別的範例程式碼分享

XML字元轉Map工具類別的範例程式碼分享

Apr 01, 2017 pm 01:13 PM

XML字元轉Map工具類別的範例程式碼分享

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

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

public class XmlUtils {

    public static Map<String, Object> Str2Map(String str){
        try {
//            long beginTime = System.currentTimeMillis();
            Document doc = DocumentHelper.parseText(str);
//            System.out.println(doc.asXML());
            Map<String, Object> map = XmlUtils.Dom2Map(doc);
//            System.out.println(map.toString());
//            System.out.println("Use time:"+(System.currentTimeMillis()-beginTime));
            return map;
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        return null;
    }
    
    public static Map<String, Object> Dom2Map(Document doc){ 
        Map<String, Object> map = new HashMap<String, Object>(); 
        if(doc == null) 
            return map; 
        Element root = doc.getRootElement(); 
        for (Iterator iterator = root.elementIterator(); iterator.hasNext();) { 
            Element e = (Element) iterator.next(); 
            List list = e.elements(); 
            if(list.size() > 0){ 
                map.put(e.getName(), Dom2Map(e)); 
            }else 
                map.put(e.getName(), e.getText()); 
        } 
        return map; 
    } 
    
    @SuppressWarnings("unchecked")
    public 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; 
    }
登入後複製

以上是XML字元轉Map工具類別的範例程式碼分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

springboot怎麼讀取yml檔案中的list列表、陣列、map集合和對象 springboot怎麼讀取yml檔案中的list列表、陣列、map集合和對象 May 11, 2023 am 10:46 AM

application.yml定義list集合第一種方式使用@ConfigurationProperties註解獲取list集合的所有值type:code:status:-200-300-400-500編寫配置文件對應的實體類,這裡需要注意的是,定義list集合,先定義一個配置類別Bean,然後使用註解@ConfigurationProperties註解來取得list集合值,這裡給大家講解下相關註解的作用@Component將實體類別交給Spring管理@ConfigurationPropertie

Java怎麼設定過期時間的map Java怎麼設定過期時間的map May 04, 2023 am 10:13 AM

一、技術背景在實際的專案開發中,我們經常會使用到快取中間件(如redis、MemCache等)來幫助我們提高系統的可用性和健全性。但很多時候如果專案比較簡單,就沒有必要為了使用快取而專門引入Redis等等中間件來加重系統的複雜性。那麼Java本身有沒有好用的輕量級的快取元件呢。答案當然是有嘍,而且方法不只一種。常見的解決方法有:ExpiringMap、LoadingCache及基於HashMap的封裝三種。二、技術效果實現快取的常見功能,如過時刪除策略熱點資料預熱三、ExpiringMap3.

Java中Map實作執行緒安全的方式有哪些 Java中Map實作執行緒安全的方式有哪些 Apr 19, 2023 pm 07:52 PM

方式1.使用HashtableMaphashtable=newHashtable();這是所有人最先想到的,那為什麼它是線程安全的?那就看看它的原始碼,我們可以看出我們常用的put,get,containsKey等方法都是同步的,所以它是線程安全的publicsynchronizedbooleancontainsKey(Objectkey){Entrytab[]=table;inthash=key.hashCode( );intindex=(hash&0x7FFFFFFF)%tab.leng

Java中將物件與Map相互轉換的實作方式 - 使用BeanMap Java中將物件與Map相互轉換的實作方式 - 使用BeanMap May 08, 2023 pm 03:49 PM

javabean與map的轉換有很多種方式,例如:1、透過ObjectMapper先將bean轉換為json,再將json轉換為map,但是這種方法比較繞,且效率很低,經測試,循環轉換10000個bean ,就需要12秒! ! !不建議使用2、透過Java反射,取得bean類別的屬性和值,再轉換到map對應的鍵值對中,這種方法次之,但稍微有點麻煩3、透過net.sf.cglib.beans.BeanMap類別中的方法,這種方式效率極高,它跟第二種方式的區別就是因為使用了緩存,初次創建bean時需要初始化,

最佳化Go語言map的效能 最佳化Go語言map的效能 Mar 23, 2024 pm 12:06 PM

最佳化Go語言map的效能在Go語言中,map是一種非常常用的資料結構,用來儲存鍵值對的集合。然而,在處理大量資料時,map的效能可能受到影響。為了提高map的效能,我們可以採取一些最佳化措施來減少map操作的時間複雜度,從而提升程式的執行效率。 1.預先分配map的容量在建立map時,我們可以透過預先分配容量來減少map擴容的次數,提高程式的效能。一般情況下,我們

Nginx伺服器中map模組怎麼配置與使用 Nginx伺服器中map模組怎麼配置與使用 May 21, 2023 pm 05:14 PM

map指令使用ngx_http_map_module模組提供的。預設情況下,nginx有載入這個模組,除非人為的--without-http_map_module。 ngx_http_map_module模組可以建立變量,這些變數的值與另外的變數值相關聯。允許分類或同時映射多個值到多個不同值並儲存到一個變數中,map指令用來創建變量,但是僅在變量被接受的時候執行視圖映射操作,對於處理沒有引用變量的請求時,這個模組並沒有性能上的缺失。一.ngx_http_map_module模組指令說明map語法

Java API 開發中使用 Hutool 進行工具類別處理 Java API 開發中使用 Hutool 進行工具類別處理 Jun 17, 2023 pm 10:53 PM

Java開發人員在進行API開發時,往往需要處理各種工具類,這些工具類可以節省開發時間並且提高程式碼的可重複使用性。 Hutool是一個Java工具類別庫,提供了豐富的工具類別和常用的演算法,能夠提高API開發的效率。 Hutool支援Java8以上版本,可以方便地用於各種場景,例如字串處理、日期時間處理、加密解密、檔案操作等等,以下就是一些常用的功能。字串處理Hut

go語言怎麼取得map元素 go語言怎麼取得map元素 Jan 16, 2023 am 10:38 AM

兩種方法:1.利用「for range」語句遍歷map來取得全部元素,語法「for key, value := range mapName{...}」。 2.使用key做為索引的形式來取得指定元素,語法「value, isOk := mapName[key]」;傳回兩個回傳值,第一個傳回值是取得的值,如果key不存在,則傳回空值,第二個參數是一個bool值,表示獲取值是否取得成功。

See all articles