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