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. IIS7.0部署MVC/WebApi项目,报404.4错误

    在web.config中添加如下的配置试试: <system.webServer> <modules runAllManagedModulesForAllRequests=" ...

  2. [LeetCode] Meeting Rooms 会议室

    Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si ...

  3. 如何在ASP.NET Core中实现CORS跨域

    注:下载本文的完整代码示例请访问 > How to enable CORS(Cross-origin resource sharing) in ASP.NET Core 如何在ASP.NET C ...

  4. MongoDB的备份和恢复

    1.导出数据库/备份: @echo off F: cd F:\software1\mongdb\mongodb-win32-x86_64-\bin start mongodump.exe -h -d ...

  5. Elasticsearch索引自动套用模板

    公司ELK系统目前的设置是每月自动将日志信息记录至新的索引中,将日志数据按月分索引保存,在扩展的ELK架构中,利Logstash对接rabbitmq,获取日志消息,自动持久化至Elasticsearc ...

  6. shell-for循环

    sheel语言for循环格式 for var in item1 item2 ... itemN do command1 command2 ... commandN done 案例1 #!/bin/ba ...

  7. wpf 后台比例设置高度

    ColumnDefinition cd0 = new ColumnDefinition(); cd0.Width = new GridLength(2, GridUnitType.Star); txt ...

  8. css3学习--border

    http://blog.sina.com.cn/s/blog_61671b520101gelr.html border-radius border-radius: 50px 20px;上下都是50px ...

  9. codevs 2287 火车站

    2287 火车站  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 钻石 Diamond     题目描述 Description 火车从始发站(称为第1站)开出,在始发站上车的人 ...

  10. zookeeper原理解析-数据存储

    Zookeeper内存结构 Zookeeper是怎么存储数据的,什么机制保证集群中数据是一致性,在网络异常,当机以及停电等异常情况下恢复数据的,我们知道数据库给我们提供了这些功能,其实zookeepe ...