1. 程式人生 > >Dom4j工具j解析XML原理和示例代碼

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

nta row class val sys 得到 iter style hone

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>[email protected]</email>
        <qq>432221111</qq>
    </contact>
    <contact id="002">
        <name>李四</name>
        <age>20</age>
        <phone>134222225555</phone>
        <email>[email protected]</email>
        <qq>432222222</qq>
    </contact>
</contactList>

運行日誌如下:

Contact [age=20, [email protected], id=001, name=張三, phone=134222223333, qq=432221111]
Contact [age=20, [email protected], 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("子標簽名稱")  得到子標簽的文本

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