天天看点

使用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;
    }
}