packageday12;importjava.io.FileInputStream;importjava.util.ArrayList;importjava.util.List;importorg.dom4j.Document;importorg.dom4j.Element;importorg.dom4j.io.SAXReader;/*** 使用DOM4J解析XML文档
*@authortarena
**/
public classParseXMLDemo {public static voidmain(String[] args) {/** 读取emplist文件,将该xml文档中的所有员工信息解析出来,
* 并以若干Emp实例保存,然后将这些员工信息存入到一个List集合中。*/
/** 使用DOM解析XML的四大致流程:
* 1.创建SAXReader
* 2.使用SAXReader读取要解析的XML文档,该步骤就是DOM耗时耗资源的地方,
* 因为会将文档所有内容解析完毕并存入到内存中。
* 读取方法会返回一个Document对象,该对象就表示解析出来的该XML文档内容
* 3.通过Document对象获取根元素(根标签)。
* 4.根据文档的结构,从根元素开始逐级获取子元素以达到遍历XML文档数据的目的。*/
try{//1
SAXReader reader = newSAXReader();//2
Document doc = reader.read(new FileInputStream("emplist.xml"));/**3.获取根元素
*Element的每一个实例用于表示XML文档中的一个元素(一对标签)
*它提供了很多用于操作当前标签的方法,其中常用的用于获取标签信息的方法有:
*
* String getName() 获取标签名
*
* Element elements(Sting name) 根据给定名字获取当前标签中的子标签
*
* List elements()
* 获取当前标签中的所有子标签,返回的集合中是若干Element实例,每个为一个子元素
*
* List elements(String name) 获取当前标签中的所有同名名字元素
*
* String getText() 获取当前标签中间的文本
*
* Attribute attribute(String name) 获取当前标签中指定名字的属性
**/Element root=doc.getRootElement();
List empList = new ArrayList();/** 获取标签中的所有标签*/List list =root.elements();/** 将每一个标签中的内容取到,并以一个Emp实例保存,然后将该对象存入集合*/
for(Element empEle : list){//System.out.println(empEle.getName());//获取name
Element nameEle = empEle.element("name");
String name=nameEle.getText();
System.out.println(name);//获取age
int age = Integer.parseInt(empEle.elementText("age"));
System.out.println(age);//获取性别
String gender = empEle.elementText("gender");
System.out.println(gender);//获取工资
int salary = Integer.parseInt(empEle.elementText("salary"));
System.out.println(salary);//获取ID
int id = Integer.parseInt(empEle.attributeValue("id"));
Emp emp= newEmp(id , name , age ,gender, salary);
empList.add(emp);
}
System.out.println("解析完成!");for(Emp e:empList){
System.out.println(e);
}
}catch(Exception e) {
e.printStackTrace();
}
}
}