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