java解析Xml——dom4j

71 阅读1分钟

java使用dom4j方法解析xml

import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
class Person{
    private String name = "";
    private int age = 100;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + ''' +
                ", age=" + age +
                '}';
    }
}
public class XmlParse {
    //xml解析遵循docment文档解析的各类规定,具体规定由w3c组织规定
    //首先要创建一个DocumentBuilder对象
    private String file = "";
    public XmlParse() {
    }

    public XmlParse(String file) {
        this.file = file;
    }

    // 读取XML文件,获得document对象
    private Document load(){
        Document document =null;
        try {
            //采取SAX方法进行文档读取
            SAXReader reader = new SAXReader();
            document =reader.read(this.file);

        }catch (Exception e){
            System.out.println("文档有误");
        }
        return document;
    }
    // 1.读取XML文件,获得document对象
    public Document load(URL file){
        Document document =null;
        try {
            //采取SAX方法进行文档读取
            SAXReader reader = new SAXReader();
            document =reader.read(file);

        }catch (Exception e){
            System.out.println("文档有误");
        }
        return document;
    }
//    2.获取根节点
    public Element getRoot(){
        Document document =  load();
        return document.getRootElement();
    }
    //3.增加节点
    public void addElement(){
        Element root = getRoot();
        //自根节点往后形成一个树形结构
        Element menu = root.addElement("person");
        Element name = menu.addElement("name");
        Element age = menu.addElement("age");
        //设置文本内容
        name.setText("cat");
        age.setText("1545");
    }
    public List<Person> elementItor(){
        List<Person> persons = new ArrayList<>();
        Element root = getRoot();
        for (Iterator it = root.elementIterator(); it.hasNext(); ) {
            Element e = (Element) it.next();
//            System.out.println(e.getName());
            Person person = new Person();
            //elementText获取节点名
            person.setName(e.elementText("name"));
            person.setAge(Integer.parseInt(e.elementText("age")));
            persons.add(person);
        }
        return persons;
    }
    public static void main(String[] args) {
        XmlParse xmlParse = new XmlParse("src/main/resources/xmlDemo.xml");
        List<Person> persons = xmlParse.elementItor();
        for(Person person:persons){
            System.out.println(person);
        }
        xmlParse.addElement();
        List<Person> newperson = xmlParse.elementItor();
        for(Person person:newperson){
            System.out.println(person);
        }
    }

}