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();
}
}
}