package XML;
/*
* 使用DOM4J解析XML文檔的大致步驟
* 1:創建SAXReader
* 2:使用SAXReader讀取XML文檔並生成Document對象
* 這一步DOM4J耗時耗資源的地方,
* 因為要將XML文檔全部讀取完畢並以Document對象形式
* 保存在內存
* 3:通過Document對象獲取根元素
* 4:重根元素開始按照XML文檔結構逐級獲取子元素
* 以達到遍歷XML文檔數據的目的
*
*
*/
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class ParseXML {
public static void main(String[] args) {
try {
SAXReader reader =new SAXReader();
Document doc=reader.read(new FileInputStream("emplist.xml"));
/*
* Document 提供了獲取根元素的方法:Element getRootElement()
* Elment 的每一個實例擁有表示XML文檔中的一個元素
* Elment提供了獲取其表示的元素的相關信息的方法,常用的:
*
* String getName() 獲取當前標簽的名字
* Element elment(String name) 獲取當前標簽下指定名字的子標簽
* List elments() 獲取當前標簽下所有子標簽
* List elments(String name) 獲取當前標簽下所有指定名字的同名子標簽
* String getText() 獲取當前標簽中間的文本
* String elmentText(String name) 獲取當前標簽下指定名字的子標簽中間的文本
* e.elmentText(“a”) 等同於 e.elment("a").getText()
* Attribyte attribyte(String name) 獲取當前標簽中指定名字的屬性
*
*/
Element root =doc.getRootElement();
List<Element> empList = root.elements("emp");
/*
* 保存所有員工信息的集合
* 將所有<EMP>標簽保存的員工信息以EMP實例形式存儲並存入到list集合中
*/
List<Emp> list =new ArrayList<Emp>();
for(Element empEle:empList) {
//獲取名字
int id = Integer.parseInt(empEle.attributeValue("id"));
String name =empEle.element("name").getText();
int age =Integer.parseInt(empEle.elementText("age"));
String gender=empEle.elementText("gender");
int salary=Integer.parseInt(empEle.elementText("salary"));
Emp emp =new Emp(id,name,age,gender,salary);
list.add(emp);
}
System.out.println("解析完畢");
for(Emp e:list) {
System.out.println(e);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}