dom4j解析xml实例
dom4j是一个java的XML API,类似jdom,用来读写XML文件,它性能优异、功能强大和极易使用等特点
所用jar包:dom4j-1.6.1.jar
需要解析的xml文件:people.xml
1 <people city="shenzhen"> 2 <student name="milton" age="22"></student> 3 <student name="lego" age="23"></student> 4 <teacher name="bruce" age="27"></teacher> 5 <teacher name="ziven" age="28"></teacher> 6 </people>
首先根据xml文档构建javabean
People.java
Student.java
Teacher.java
解析代码:
package com.test.xml; import java.io.File; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import com.test.xml.element.People; import com.test.xml.element.Student; import com.test.xml.element.Teacher; public class XmlParser { @SuppressWarnings("unchecked") public static People parseXml(String xmlPath){ File xmlFile = new File(xmlPath); System.out.println(xmlFile.getPath()); if(xmlFile.exists()){ SAXReader reader = new SAXReader(); People people = new People(); try { //读入文档流 Document document = reader.read(xmlFile); //获取根节点 Element root = document.getRootElement(); List<Student> students = new ArrayList<Student>(); List<Teacher> teachers = new ArrayList<Teacher>(); people.setCity(root.attributeValue("city")); //解析student节点 for(Iterator iterator = root.elementIterator("student");iterator.hasNext();){ Element eStudent = (Element) iterator.next(); Student student = new Student(eStudent.attributeValue("name"), Integer.parseInt(eStudent.attributeValue("age"))); students.add(student); } //解析teacher节点 for(Iterator iterator = root.elementIterator("teacher");iterator.hasNext();){ Element eTeacher = (Element) iterator.next(); Teacher teacher = new Teacher(eTeacher.attributeValue("name"), Integer.parseInt(eTeacher.attributeValue("age"))); teachers.add(teacher); } people.setStudent(students); people.setTeacher(teachers); System.out.println("parse success!"); } catch (DocumentException e) { e.printStackTrace(); } return people; }else{ System.out.println("file is not exist!"); return null; } } public static void main(String[] args) throws URISyntaxException{ String xmlPath = ""; xmlPath = "D:/Program Files/eclipse-jee/workspace/TEST/src/com/test/xml/people.xml"; System.out.println("file full path is "+xmlPath); //解析people.xml People p = parseXml(xmlPath); //处理解析结果 System.out.println(p.getCity()); List<Student> sList = p.getStudent(); List<Teacher> tList = p.getTeacher(); for(Student s:sList){ System.out.println(s.getName()+"--"+s.getAge()); } for(Teacher t:tList){ System.out.println(); } } }