`
zhaobing315
  • 浏览: 230165 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

dom4j解析xml实例

阅读更多

dom4j是一个java的XML API,类似jdom,用来读写XML文件,它性能优异、功能强大和极易使用等特点

所用jar包:dom4j-1.6.1.jar

需要解析的xml文件:people.xml

 

<people city="shenzhen">
	<student name="milton" age="22"></student>
	<student name="lego" age="23"></student>
	<teacher name="bruce" age="27"></teacher>
	<teacher name="ziven" age="28"></teacher>
</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();
		}
	}
}
运行结果:
parse success!
shenzhen
milton--22
lego--23
分享到:
评论
2 楼 ssssd1000 2013-12-18  
请楼主把
People.java

Student.java

Teacher.java
这三个文件一块放上来,代码才更容易理解.....
1 楼 zmx200908 2012-06-11  
感谢分享~

相关推荐

Global site tag (gtag.js) - Google Analytics