dom4j是一个Java的XML API,类似于jdom,用来读取的XML文件,由于它是将文件解析完存放在内存当中的,所以不适合解析大的XML文件,但就方便性和性能方面,一定程度要优于JDK中Domcument和SAX解析的。下面我就用dom4j来对xml文件进行遍历,感兴趣的同学可以看一下,注释很详细

被解析的XML文件studentInfo.xml

<?xml version="1.0" encoding="UTF-8"?>

<school>

	<college name="云计算">
<class name="1410A" classroom="36306">
<student>
<property name="name" value="张三"></property>
<property name="age" value="23"></property>
<property name="garden" value="男"></property>
</student>
<student>
<property name="name" value="李四"></property>
<property name="age" value="22"></property>
<property name="garden" value="女"></property>
</student>
<student>
<property name="name" value="王五"></property>
<property name="age" value="24"></property>
<property name="garden" value="男"></property>
</student>
</class>
</college> <college name="传媒">
<class name="1408C" classroom="35108">
<student>
<property name="name" value="小明"></property>
<property name="age" value="21"></property>
<property name="garden" value="男"></property>
</student>
<student>
<property name="name" value="小宇"></property>
<property name="age" value="22"></property>
<property name="garden" value="男"></property>
</student>
<student>
<property name="name" value="小张"></property>
<property name="age" value="25"></property>
<property name="garden" value="男"></property>
</student>
<student>
<property name="name" value="小红"></property>
<property name="age" value="20"></property>
<property name="garden" value="女"></property>
</student>
</class>
</college> </school>

  首先创建File,获取到根节点

	/**
* 功能:获取文件的document对象,然后获取对应的根节点
* 作者:茹子赫
* 时间:2016年12月6日 上午9:30:38
*/
@Test
public void testGetRoot() throws Exception{ //获取读取xml方式
SAXReader reader = new SAXReader(); //找到xml文件位置
File file = new File("studentInfo.xml"); //读取文档并存入到document中,如果文档无节点,则会抛出Exception提前结束  
Document document = reader.read(file); //获取根节点
Element root = document.getRootElement(); //从根节点遍历所有子节点
this.getNodes(root);
}

  

从根节点开始,递归遍历所有节点和属性

     /**
* 功能:递归遍历所有子节点
* 作者:茹子赫
* 时间:2016年12月6日 上午9:31:13
*/
public void getNodes(Element node){ System.out.println("------------------------"); System.out.println("当前节点名称:"+node.getName());
System.out.println("节点的内容:"+node.getTextTrim()); //所有节点 List
List<Attribute> listAttr = node.attributes(); //遍历所有节点的所有属性
for(Attribute attr : listAttr){ //属性的名称
String name = attr.getName(); //属性的值
String value = attr.getValue(); System.out.println("属性名称:"+name+" 属性值:"+value);
} //递归遍历当前节点所有的子节点  
List<Element> listElement = node.elements(); //遍历所有一级子节点
for(Element e : listElement){
this.getNodes(e);
}
}

  部分输出结果

------------------------
当前节点名称:school
节点的内容:
------------------------
当前节点名称:college
节点的内容:
属性名称:name 属性值:云计算
------------------------
当前节点名称:class
节点的内容:
属性名称:name 属性值:1410A
属性名称:classroom 属性值:36306
------------------------
当前节点名称:student
节点的内容:
------------------------
当前节点名称:property
节点的内容:
属性名称:name 属性值:name
属性名称:value 属性值:张三
------------------------
当前节点名称:property
节点的内容:
属性名称:name 属性值:age
属性名称:value 属性值:23
------------------------
当前节点名称:property
节点的内容:
属性名称:name 属性值:garden
属性名称:value 属性值:男
------------------------
当前节点名称:student
节点的内容:
------------------------
当前节点名称:property
节点的内容:
属性名称:name 属性值:name
属性名称:value 属性值:李四
------------------------
当前节点名称:property
节点的内容:
属性名称:name 属性值:age
属性名称:value 属性值:22
------------------------
当前节点名称:property
节点的内容:
属性名称:name 属性值:garden
属性名称:value 属性值:女
------------------------

  其中我们也要用到dom4j-1.6.1.jar包

Dom4j解析xml文件的更多相关文章

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

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

  2. 用DOM4J解析XML文件案例

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

  3. 使用DOM4J解析XMl文件与读取XML文件

    XML文件 <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id ...

  4. Dom4j解析Xml文件,Dom4j创建Xml文件

    Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...

  5. Java进阶(二十七)使用Dom4j解析XML文件

    使用Dom4j解析XML文件 写在前面的话 由于论文实验要求,需要实现操作XML文档,为此想到了dom4j这个工具,使用之后深感受益.在此分享给大家,以此共勉. 注:本文转载自http://blog. ...

  6. 使用dom4j 解析xml文件

    //使用dom4j 解析xml文件,升级版,dom4j是对dom的封装 //重点 package com.offcn.utils; import java.io.File; import java.i ...

  7. dom4j 解析XML文件

    <?xml version="1.0" encoding="UTF-8"?> <!-- 手机的根节点 --> <Phones> ...

  8. 用dom4j解析xml文件并执行增删改查操作

    转自:https://www.aliyun.com/jiaocheng/1339446.html xml文件: <?xml version="1.0" encoding=&q ...

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

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

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

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

随机推荐

  1. JS中typeof与instanceof的区别

    JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的: Typeof typeof 是一个一元运算,放在一个运算数之前 ...

  2. [LeetCode] Find Minimum in Rotated Sorted Array II 寻找旋转有序数组的最小值之二

    Follow up for "Find Minimum in Rotated Sorted Array":What if duplicates are allowed? Would ...

  3. tensorflow学习笔记二:入门基础

    TensorFlow用张量这种数据结构来表示所有的数据.用一阶张量来表示向量,如:v = [1.2, 2.3, 3.5] ,如二阶张量表示矩阵,如:m = [[1, 2, 3], [4, 5, 6], ...

  4. express不是内部或外部命令

    网上找了一下原因,是因为express在4.0以后把命令工具单独分出来了,所以安装完express后,还得再安装express-generator: 如果不是采用的全局安装,则需要把 "安装 ...

  5. 常用的一些linux命令

    最近接触到一些linux环境部署的事情,下面分享一些最近使用的比较频繁的一些linux命令~ 1.一次性移动多个文件到一个文件夹里 mv  被移动文件名 -t 目标文件夹 如:mv a.txt b.t ...

  6. KMP算法实现

    链接:http://blog.csdn.net/joylnwang/article/details/6778316 KMP算法是一种很经典的字符串匹配算法,链接中的讲解已经是很明确得了,自己按照其讲解 ...

  7. 搭建自己的网站之一:如何在linux下使用tomcat

    1. 要打造自己的网站,首先应该有属于自己的服务器.个人的话可以在阿里云或者腾讯云购买云主机,需要的话再购买一个域名,与自己的公网ip绑定(不然只能由ip地址访问,当然,自己用来练手的话是没什么问题的 ...

  8. 北京培训记day5

    高级数据结构 一.左偏树&斜堆 orz黄源河论文 合并,插入,删除根节点 打标记 struct Node { int fa,l,r,w,dep } tree[Mx]; int Merge(in ...

  9. 【BZOJ-3143】游走 高斯消元 + 概率期望

    3143: [Hnoi2013]游走 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2264  Solved: 987[Submit][Status] ...

  10. Java的配置文件有多少种

    最正宗的只有两个xml和properties两种,其中properties文件用的最广. 其实还有一些如txt,excel这些也可以实现配置文件,但不太正宗. 对于配置文件需要注意以下几点: 1.路径 ...