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. python框架之django

    python框架之django 本节内容 web框架 mvc和mtv模式 django流程和命令 django URL django views django temple django models ...

  2. mininet中iperf sever自动退出

    使用iperf 在mininet进行吞吐量测试是常用的方法,之前结束iperf server的方法是运行os.system('pkill iperf')命令. 但是这种方式iperf server有可 ...

  3. Life

    24小时热水.24小时无线WiFi.24小时空调:有人陪你,不孤单,不寂寞,不瞎想,不停的传播正能量

  4. [LeetCode] H-Index II 求H指数之二

    Follow up for H-Index: What if the citations array is sorted in ascending order? Could you optimize ...

  5. 常用Linux命令

    1.mkdir 建立目录 $ mkdir testdir 2.ls   列出目录下的内容的详细信息  ls -al testdir 3.cd  更换当前工作目录   cd testdir 4.pwd  ...

  6. HashMap

    HashMap的定义 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, ...

  7. ROS中DDNS的使用

    一.通过tool fetch更新ddns,关于此命令的使用,参考 tool fetch Scripts中添加脚本/tool fetch url="http://www.51kwl.com/? ...

  8. JavaScript事件详解-jQuery的事件实现(三)

    正文 本文所涉及到的jQuery版本是3.1.1,可以在压缩包中找到event模块.该篇算是阅读笔记,jQuery代码太长.... Dean Edward的addEvent.js 相对于zepto的e ...

  9. JsonResult类设置返回json的长度(工作笔记 json转化出错)

    public JsonResult PoundageReportSearch()         {    JsonResult jr = new JsonResult();        // 实例 ...

  10. 【JavaWeb】Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(二)

    Log4j 这个东西,大家都熟悉,就简单的介绍一下,算是一个抛砖引玉,因为我自己在Log日志的搭建方面,没有什么经验,但这东西确实是非常重要的,日后调Bug没有它基本不可能,如果有朋友有什么比较好的L ...