使用dom4j簡單讀取xml

使用dom4j簡單讀取xml

    public static void main(String[] args){
        XmlReader xmlReader = new XmlReader("D:\\00csv\\sfrzcfg");
        Document document = xmlReader.parseByPath();
        Map<String, Object> map = xmlReader.getElementMap();
        System.out.println(map.toString());
    }
package com.reader.xml;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.springframework.util.Assert;

import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class XmlReader {

    private String path;

    private URL url;

    private List<Element> elements = new ArrayList<>();

    private Map<String, Object> map = new HashMap<>();

    private Element rootElement;

    public XmlReader(String path){
        this.path = path;
    }

    public XmlReader(URL url){
        this.url = url;
    }

    public Document parseByUrl() throws DocumentException {
        Assert.isTrue(this.url!=null, "url can not be null");
        SAXReader reader = new SAXReader();
        Document document = reader.read(this.url);
        this.rootElement = document.getRootElement();
        return document;
    }
    public Document parseByPath(){
        Assert.isTrue(this.path!=null, "path can not be null");
        SAXReader reader = new SAXReader();
        Document document = null;
        try {
            document = reader.read(this.path);
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        this.rootElement = document.getRootElement();
        return document;
    }
    private void getNodes(Element node) {
        //遞歸遍歷當前節點所有的子節點
        List<Element> listElement = node.elements();
        for (Element e : listElement) {
            this.elements.add(e);
            this.map.put(e.getName(), e.getData());
            this.getNodes(e);
        }
    }
    public List<Element> getElements(){
        this.elements = new ArrayList<>();
        getNodes(this.rootElement);
        return elements;
    }
    public Map<String, Object> getElementMap(){
        this.map = new HashMap<>();
        getNodes(this.rootElement);
        return this.map;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章