1. 程式人生 > >JAVA利用dom4j解析xml轉map

JAVA利用dom4j解析xml轉map

dom4j maven依賴

 <!-- https://mvnrepository.com/artifact/dom4j/dom4j -->
    <dependency>
      <groupId>dom4j</groupId>
      <artifactId>dom4j</artifactId>
      <version>1.6.1</version>
    </dependency>

xml轉換為map的方法原始碼

    /**
     *
     * @param xml 要轉換的xml字串
     * @param charset 字元編碼
     * @return  轉換成map後返回結果
     * @throws UnsupportedEncodingException
     * @throws DocumentException
     */
    public static Map<String, String> xmlToMap(String xml, String charset) throws UnsupportedEncodingException, DocumentException{

        Map<String, String> respMap = new HashMap<String, String>();

        SAXReader reader = new SAXReader();
        Document doc = reader.read(new ByteArrayInputStream(xml.getBytes(charset)));
        Element root = doc.getRootElement();
        xmlToMap(root, respMap);
        return respMap;
    }

    public static Map<String, String> xmlToMap(Element tmpElement, Map<String, String> respMap){
        ArrayList<String> strings = new ArrayList<String>();
        for (String s:strings
             ) {
            
        }
        if (tmpElement.isTextOnly()) {
            respMap.put(tmpElement.getName(), tmpElement.getText());
            return respMap;
        }

        @SuppressWarnings("unchecked")
        Iterator<Element> eItor = tmpElement.elementIterator();
        while (eItor.hasNext()) {
            Element element = eItor.next();
            xmlToMap(element, respMap);
        }
        return respMap;
    }

注意導包不要搞錯

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

測試資料

<!--   Copyright w3school.com.cn  -->
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

測試之後得出的map呼叫toString並列印輸出,得到的結果

{to=George, body=Don't forget the meeting!, from=John, heading=Reminder}