最近在 一些对xml文件的操作,下面简单写一个dom4j解析xml文件并将其封装到一个javabean中的例子,只是具有针对性的,不是通用的,仅供参考哦~~

首先说:dom4j是一个java的XML api,性能优异、功能强大、易于使用。使用dom4j对xml文件进行解析,并完成对文件的封装。

接下来,主要使用到的是dom4j中的SAXReader类,在这里我的流程是传入一个xml文件,调用写好的的工具类,完成对xml文件的解析。

xml文件如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <school>
  4.  
  5. <college name="数学">
  6. <class name="1612A" classroom="36306">
  7. <student>
  8. <property name="name" value="张三"></property>
  9. <property name="age" value="23"></property>
  10. <property name="garden" value="男"></property>
  11. </student>
  12. <student>
  13. <property name="name" value="李四"></property>
  14. <property name="age" value="22"></property>
  15. <property name="garden" value="女"></property>
  16. </student>
  17. <student>
  18. <property name="name" value="王五"></property>
  19. <property name="age" value="24"></property>
  20. <property name="garden" value="男"></property>
  21. </student>
  22. </class>
  23. </college>
  24.  
  25. <college name="英语">
  26. <class name="1612C" classroom="35108">
  27. <student>
  28. <property name="name" value="赵六"></property>
  29. <property name="age" value="21"></property>
  30. <property name="garden" value="男"></property>
  31. </student>
  32. <student>
  33. <property name="name" value="陈七"></property>
  34. <property name="age" value="22"></property>
  35. <property name="garden" value="男"></property>
  36. </student>
  37. <student>
  38. <property name="name" value="郭八"></property>
  39. <property name="age" value="25"></property>
  40. <property name="garden" value="男"></property>
  41. </student>
  42. <student>
  43. <property name="name" value="孙九"></property>
  44. <property name="age" value="20"></property>
  45. <property name="garden" value="女"></property>
  46. </student>
  47. </class>
  48. </college>
  49.  
  50. </school>

Junit 测试如下:

  1. public class Dom4jTest {
  2.  
  3. @Test
  4. public void test() throws Exception{

  5. 6
  6. File xmlFile = new File("文件位置");
  7. // 调用工具类返回学生集合
  8. List<Student> studentList = XMLUtil.fileTransferList(xmlFile);
  9.  
  10. for (Student student : studentList) {
  11.  
  12. System.out.println("-------------------------");
  13. System.out.println("姓名:"+student.getName());
  14. System.out.println("年龄:"+student.getAge());
  15. System.out.println("性别:"+student.getGarden());
  16.  
  17. }
  18.  
  19. }
  20.  
  21. }

工具类如下:

  1. public class XMLUtil {
  2.  
  3. public static List<Student> fileTransferList(File file) throws DocumentException{
  4.  
  5. // 返回值:学生信息集合
  6. List<Student> studentList=new ArrayList<Student>();
  7.  
  8. // 创建saxReader对象
  9. SAXReader reader = new SAXReader();
  10.  
  11. // 通过read方法读取一个文件 转换成Document对象
  12. Document document = reader.read(file);
  13.  
  14. //获取根节点元素对象
  15. Element root = document.getRootElement();
  16.  
  17. // 获取学院节点集合
  18. List<Element> collegeElements = root.elements();
  19.  
  20. //已知属性名情况下
  21. for (Element college : collegeElements) {
  22.  
  23. List<Student> collegeStudentList = getStudentListFromCollegeElement(college);
  24.  
  25. studentList.addAll(collegeStudentList);
  26. }
  27.  
  28. return studentList;
  29. }
  30.  
  31. private static List<Student> getStudentListFromCollegeElement(Element collegeElement){
  32.  
  33. // 返回值:学生信息集合
  34. List<Student> studentList = new ArrayList<Student>();
  35.  
  36. List<Element> classElements = collegeElement.elements();
  37.  
  38. for (Element classElement : classElements) {
  39.  
  40. List<Student> classStudentList = getStudentListFromClassElement(classElement);
  41.  
  42. studentList.addAll(classStudentList);
  43. }
  44.  
  45. return studentList;
  46.  
  47. }
  48.  
  49. private static List<Student> getStudentListFromClassElement(Element classElement){
  50.  
  51. // 返回值:学生信息集合
  52. List<Student> studentList = new ArrayList<Student>();
  53.  
  54. List<Element> studentElements = classElement.elements();
  55.  
  56. for (Element student : studentElements) {
  57.  
  58. List<Element> propertyElements = student.elements();
  59.  
  60. Student student2 = studentElementTransferStudentEntity(propertyElements);
  61.  
  62. studentList.add(student2);
  63. }
  64.  
  65. return studentList;
  66. }
  67.  
  68. private static Student studentElementTransferStudentEntity(List<Element> propertyElements){
  69.  
  70. Student stu = new Student();
  71.  
  72. for (Element property : propertyElements) {
  73.  
  74. String name = property.attributeValue("name");
  75. String value = property.attributeValue("value");
  76.  
  77. if("name".equals(name)){
  78. stu.setName(value);
  79. }
  80. if("age".equals(name)){
  81. stu.setAge(value);
  82. }
  83. if("garden".equals(name)){
  84. stu.setGarden(value);
  85. }
  86. }
  87.  
  88. return stu;
  89. }
  90.  
  91. }

最后呢,当然是显示结果了~~

结果如下:

到此结束了,以后也许有有其他解析的方法,也希望各位同道一块学习~~

dom4j如何解析XML文件的更多相关文章

  1. DOM4J方式解析XML文件

    dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory dom4j是一个简单的开源库,用于处理XML. X ...

  2. java中采用dom4j解析xml文件

    一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...

  3. 在java项目中怎样利用Dom4j解析XML文件获取数据

    在曾经的学习.net时常常会遇到利用配置文件来解决项目中一些须要常常变换的数据.比方数据库的连接字符串儿等.这个时候在读取配置文件的时候.我们一般会用到一个雷configuration,通过这个类来进 ...

  4. Dom4j解析xml文件

    dom4j是一个Java的XML API,类似于jdom,用来读取的XML文件,由于它是将文件解析完存放在内存当中的,所以不适合解析大的XML文件,但就方便性和性能方面,一定程度要优于JDK中Domc ...

  5. 使用dom4j创建和解析xml文件

    使用dom4j创建和解析xml文件 在项目开发中,我们经常会遇到xml文件的创建和解析从别人接口得到的xml文件,而我们最常使用的组件是dom4j. 下面我就以代码来讲解一下如何使用dom4j来创建x ...

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

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

  7. 用DOM4J解析XML文件案例

    用DOM4J解析XML文件案例,由于DOM4J不像JAXP属于JAVASE里,所以如果要使用DOM4J,则必须额外引入jar包,如图:

  8. 解析XML文件的几种常见操作方法—DOM/SAX/DOM4j

    解析XML文件的几种常见操作方法—DOM/SAX/DOM4j 一直想学点什么东西,有些浮躁,努力使自己静下心来看点东西,哪怕是回顾一下知识.看到了xml解析,目前我还没用到过.但多了解一下,加深点记忆 ...

  9. Dom4J解析xml文件动态转换为List<Bean>或者Map集合

    大家在解析大量相似xml文件的时候是否会遇到这样一个问题:冗余的代码去set定义的实体对象Bean的值,基本都是一样的操作   而且毫无任何代码价值可言所以在这写了一个简单的例子,类封装了几个方法你只 ...

随机推荐

  1. as3绕过策略文件给视频截图

    接上篇 http://www.cnblogs.com/DarkMaster/p/5973593.html 这篇同样是在老外博客上找到的,分享给大家,再次感叹老外牛逼啊. 原文地址:http://gam ...

  2. 最新版CKEditor在线编辑器的配置方法

    下载地址: http://ckeditor.com/download 使用方法: 在页面<head>中引入ckeditor核心文件ckeditor.js <script type=& ...

  3. Win2008R2+java+tomcat安装

    Win2008R2+java+tomcat安装 准备软件: jdk-7u25-windows-x64.exe apache-tomcat-7.0.42-windows-x64.zip 一.安装java ...

  4. LeetCode Fizz Buzz

    原题链接在这里:https://leetcode.com/problems/fizz-buzz/ 题目: Write a program that outputs the string represe ...

  5. val()失效

    在表单设置了disabled或者readonlye,那么val()方会失效,可以采用$().attr('value','')

  6. 选择App开发外包时,你该了解哪些法律常识?

    随着App需求的激增,选择App外包服务的客户也多了起来.然而客户和开发方对于其中的法律条款却不甚了解,导致在服务过程中,时常会发生一些分歧和纠纷,最终致使项目搁浅. 为了普及App外包的法律常识,移 ...

  7. centos7 搭建GlusterFS

    centos7 搭建GlusterFS 转载http://zhaijunming5.blog.51cto.com/10668883/1704535 实验需求:4台机器安装GlusterFS组成一个集群 ...

  8. Java实现冒泡排序

    冒泡排序思想就是将数列的相邻两个数比较,较大的数往后保存,小的数往前. package Sort; import java.util.Arrays; public class BubbleSort { ...

  9. swift language

    API reference Swift UIKit Swift 菜鸟教程 Great Installed Visual Studio Code, I found I cannot open it fr ...

  10. Timusoj 1982. Electrification Plan

    http://acm.timus.ru/problem.aspx?space=1&num=1982 1982. Electrification Plan Time limit: 0.5 sec ...