Dom4j工具j解析XML原理和示例代码

import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

/**
 * 把xml文档信息封装到对象中
 *
 */
public class Demo {

    public static void main(String[] args) throws Exception{
        List<Contact> list = new ArrayList<Contact>();

        //读取xml,封装对象
        SAXReader reader = new SAXReader();
        Document doc = reader.read(new File("./src/contact.xml"));
        //读取contact标签
        Iterator<Element> it = doc.getRootElement().elementIterator("contact");
        while(it.hasNext()){
            Element elem = it.next();
            //创建Contact
            Contact contact = new Contact();
            contact.setId(elem.attributeValue("id"));
            contact.setName(elem.elementText("name"));
            contact.setAge(elem.elementText("age"));
            contact.setPhone(elem.elementText("phone"));
            contact.setEmail(elem.elementText("email"));
            contact.setQq(elem.elementText("qq"));
            list.add(contact);
        }

        for (Contact contact : list) {
            System.out.println(contact);
        }


    }
}

contact.xml

<?xml version="1.0" encoding="utf-8"?>
<contactList>
    <contact id="001">
        <name>张三</name>
        <age>20</age>
        <phone>134222223333</phone>
        <email>zhangsan@qq.com</email>
        <qq>432221111</qq>
    </contact>
    <contact id="002">
        <name>李四</name>
        <age>20</age>
        <phone>134222225555</phone>
        <email>lisi@qq.com</email>
        <qq>432222222</qq>
    </contact>
</contactList>

运行日志如下:

Contact [age=20, email=zhangsan@qq.com, id=001, name=张三, phone=134222223333, qq=432221111]
Contact [age=20, email=lisi@qq.com, id=002, name=李四, phone=134222225555, qq=432222222]

 原理:

读取xml文档:
                                Document doc = new SAXReader().read("xml文件"); 

                        节点:
                                nodeIterator();  所有节点
                        标签:
                                element("名称")   指定名称的第一个子标签对象
                                elementIterator("名称");  指定名称的所有子标签对象
                                elements();  所有子标签对象
                        属性:
                                attributeValue(“名称”) 指定名称的属性值
                                attribute("名称")   指定名称的属性对象
                                        getName()  属性名称
                                        getValue()  属性值
                                atributeIterator()   所有属性对象(Iterator)
                                attributes()       所有属性对象(List)
                        文本:
                                getText()  得到当前标签的文本
                                elementText("子标签名称")  得到子标签的文本
原文地址:https://www.cnblogs.com/loaderman/p/9995897.html