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

解析代码:

  1. package com.test.xml;
  2. import java.io.File;
  3. import java.net.URISyntaxException;
  4. import java.util.ArrayList;
  5. import java.util.Iterator;
  6. import java.util.List;
  7. import org.dom4j.Document;
  8. import org.dom4j.DocumentException;
  9. import org.dom4j.Element;
  10. import org.dom4j.io.SAXReader;
  11. import com.test.xml.element.People;
  12. import com.test.xml.element.Student;
  13. import com.test.xml.element.Teacher;
  14. public class XmlParser {
  15. @SuppressWarnings("unchecked")
  16. public static People parseXml(String xmlPath){
  17. File xmlFile = new File(xmlPath);
  18. System.out.println(xmlFile.getPath());
  19. if(xmlFile.exists()){
  20. SAXReader reader = new SAXReader();
  21. People people = new People();
  22. try {
  23. //读入文档流
  24. Document document = reader.read(xmlFile);
  25. //获取根节点
  26. Element root = document.getRootElement();
  27. List<Student> students = new ArrayList<Student>();
  28. List<Teacher> teachers = new ArrayList<Teacher>();
  29. people.setCity(root.attributeValue("city"));
  30. //解析student节点
  31. for(Iterator iterator = root.elementIterator("student");iterator.hasNext();){
  32. Element eStudent = (Element) iterator.next();
  33. Student student = new Student(eStudent.attributeValue("name"), Integer.parseInt(eStudent.attributeValue("age")));
  34. students.add(student);
  35. }
  36. //解析teacher节点
  37. for(Iterator iterator = root.elementIterator("teacher");iterator.hasNext();){
  38. Element eTeacher = (Element) iterator.next();
  39. Teacher teacher = new Teacher(eTeacher.attributeValue("name"), Integer.parseInt(eTeacher.attributeValue("age")));
  40. teachers.add(teacher);
  41. }
  42. people.setStudent(students);
  43. people.setTeacher(teachers);
  44. System.out.println("parse success!");
  45. } catch (DocumentException e) {
  46. e.printStackTrace();
  47. }
  48. return people;
  49. }else{
  50. System.out.println("file is not exist!");
  51. return null;
  52. }
  53. }
  54. public static void main(String[] args) throws URISyntaxException{
  55. String xmlPath = "";
  56. xmlPath = "D:/Program Files/eclipse-jee/workspace/TEST/src/com/test/xml/people.xml";
  57. System.out.println("file full path is "+xmlPath);
  58. //解析people.xml
  59. People p = parseXml(xmlPath);
  60. //处理解析结果
  61. System.out.println(p.getCity());
  62. List<Student> sList = p.getStudent();
  63. List<Teacher> tList = p.getTeacher();
  64. for(Student s:sList){
  65. System.out.println(s.getName()+"--"+s.getAge());
  66. }
  67. for(Teacher t:tList){
  68. System.out.println();
  69. }
  70. }
  71. }
  1. 运行结果:
  1. parse success!
  2. shenzhen
  3. milton--22
  4. lego--23

dom4j解析xml实例的更多相关文章

  1. java dom4j解析xml实例(2)

    java利用dom4j解析xml 需要的jar包: dom4j官方网站在 http://www.dom4j.org/ 下载dom4j-1.6.1.zip 解开后有两个包,仅操作XML文档的话把dom4 ...

  2. java dom4j解析xml实例

    java利用dom4j解析xml 需要的jar包: dom4j官方网站在 http://www.dom4j.org/ 下载dom4j-1.6.1.zip 解开后有两个包,仅操作XML文档的话把dom4 ...

  3. dom4j解析xml实例(2)

    dom4j是一个java的XML API,类似jdom,用来读写XML文件,它性能优异.功能强大和极易使用等特点 所用jar包:dom4j-1.6.1.jar.jaxen-1.1-beta-6.jar ...

  4. java dom4j解析xml实例(3)

    代码运行前需要先导入dom4j架包. 需要解析的XML文件test.xml如下: <students> <student age="25"><!--如 ...

  5. 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

    一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...

  6. dom4j解析xml文档全面介绍

    一.dom4j介绍 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点, ...

  7. 源生API解析XML文档与dom4j解析XML文档

    一.XML语言 XML是一种可扩展的标记语言,是一种强类型的语言,类似HTML(超文本标记语言,是一种弱类型的语言).XML是一种通用的数据交换格式(关系型数据库),综上所诉:XML可以传输数据,也可 ...

  8. 【java项目实战】dom4j解析xml文件,连接Oracle数据库

    简单介绍 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方.我们还是看一下官方给出的解释.例如以下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT ...

  9. org.dom4j 解析XML

    org.dom4j 解析xml java 代码 1 import java.io.File; import java.io.FileOutputStream; import java.io.FileW ...

随机推荐

  1. 定义django admin的站点头,标题等

    admin.py from django.contrib import admin from app.models import Product # Register your models here ...

  2. QTP使用小技巧

    1.创建action template.     当希望在每一个新建action时都增加一些头部说明,比如作者.创建日期.说明等,用action template     来实现最简单快捷.      ...

  3. JavaScript高级程序设计:第十章

    一.理解包含不同层次节点的DOM 1.节点层次 以下面的HTML为例: <html> <head> <title>Sample Page</title> ...

  4. angular 搜索记录保留

    #方法1: 点击后退到home后,再点击搜索, locationChangeStart 事件会多次触发. # $scope.keyword = $location.search().search # ...

  5. SSH-KeyGen 的用法

    假设 A 为客户机器,B为目标机: 要达到的目的:A机器ssh登录B机器无需输入密码:加密方式选 rsa|dsa均可以,默认dsa 做法:1.登录A机器 2.ssh-keygen -t [rsa|ds ...

  6. A框架 第三步 先加载父类,如果加载子类.立马报错.里面继承的父类还没有导入

    先导入  超级父类 如object.php ----controller.php 框架文件中 后导入  当前请求的controller的抽象父类(controller_abstract) 最后  导入 ...

  7. 触动精灵 alilib

    --gethtml function gethtml (url) local sz = require("sz") local http = require("szock ...

  8. 学习PHP函数:preg_match_all

    <?php $str = '10.10.10.10, 10.10.10.11'; preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', ...

  9. Floodfill算法——求独立子图个数

    Floodfill--漫水填充法(也称种子填充法)简单来说就是求一个图中独立子图的个数并将其描述出不同的状态.Floodfill在计算机图形学有着非常广泛的运用,比如图像分割.物体识别之类.基于Flo ...

  10. masonry使用问题

    2015年11月3日 coreData的学习练习中复习使用masonry自动布局 masonry自动布局发现问题: 两个控件的相对布局: 如果被参考对象用这个带anchor的属性,就会报这样一个错误: ...