Java获取XML节点总结之读取XML文档节点
个人博客地址:http://www.ijianmi.com/
dom4j是Java的XML API,用来读写XML文件的。目前有很多场景中使用dom4j来读写xml的。
要使用dom4j开发,需要下载导入dom4j相应的jar文件。
官网下载:http://www.dom4j.org/dom4j-1.6.1/
github下载:http://dom4j.github.io/
下载解压之后如图所示:

我们只需要把dom4j-1.6.1.jar文件构建到我们开发项目中就可以了。

下面就以Eclipse创建java项目的构建方法为例说明:
声明:本Java项目的开发环境JDK1.8,Eclipse版本 Neon.1 Release (4.6.1)
首先创建一个demo项目:

在demo项目中创建一个lib文件,把dom4j-1.6.1.jar文件拷贝到lib中,然后右键dom4j-1.6.1jar文件。如图所示:

点击Add to Bulid Path即可构建到项目中去了。
导入成功如图所示:

在项目开发的过程中可以参考docs文件夹的(帮助文档),找到index.html打开,点击Quick start可以通过帮助文档进行学习 dom4j进行xml的解析。
如图所示:

下面我将以详细例子去介绍Java操作xml文件,文件名为exmple.java。
package vastsum; import java.io.File;
import java.util.Iterator;
import java.util.List; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader; /**
* 读取下xml文档,获得document对象。
* 本文为xml连载第一篇,以下代码可以直接运行,结尾附上源码下载地址。
*/
class exmple {
public static void main(String[] args) throws DocumentException
{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("./src/contact.xml")); /**
* 节点对象的操作方法
*/ //获取文档根节点
Element root = document.getRootElement();
//输出根标签的名字
System.out.println(root.getName()); //获取根节点下面的所有子节点(不包过子节点的子节点)
List<Element> list = root.elements() ;
//遍历List的方法
for (Element e:list){
System.out.println(e.getName());
} //获得指定节点下面的子节点
Element contactElem = root.element("contact");//首先要知道自己要操作的节点。
List<Element> contactList = contactElem.elements();
for (Element e:contactList){
System.out.println(e.getName());
} //调用下面获取子节点的递归函数。
getChildNodes(root); //获得当前标签下指定名称的第一个子标签
Element conElem = root.element("contact");
System.out.println(conElem.getName()); //获得更深层次的标签(一层一层的获取)
Element nameElem = root.element("contact").element("name");
System.out.println(nameElem.getName());
} //递归查询节点函数,输出节点名称
private static void getChildNodes(Element elem){
System.out.println(elem.getName());
Iterator<Node> it= elem.nodeIterator();
while (it.hasNext()){
Node node = it.next();
if (node instanceof Element){
Element e1 = (Element)node;
getChildNodes(e1);
} }
} }
下面是对应的xml文件,文件名为contact.xml:
<?xml version="1.0" encoding="utf-8"?>
<contactList>
<contact id="001" class="style">
<name>张三</name>
<age>20</age>
<phone>134222223333</phone>
<email>zhangsan@qq.com</email>
<qq>432221111</qq>
</contact>
<contact id="002">
<name>李四</name>
<age>20</age>
<phone>134222225555</phone>
<email>lisi@qq.com</email>
<qq>432222222</qq>
</contact>
<contactTwo>
<name>王五</name>
<age>32</age>
<phone>465431341</phone>
<emali>af@qq.com</emali>
<qq>46164694</qq>
</contactTwo>
<test>测试</test>
<test>其他用途</test>
</contactList>
两个文件的目录如题所示:

Java获取XML节点总结之读取XML文档节点的更多相关文章
- 深入理解DOM节点类型第七篇——文档节点DOCUMENT
× 目录 [1]特征 [2]快捷访问 [3]文档写入 前面的话 文档节点document,隶属于表示浏览器的window对象,它表示网页页面,又被称为根节点.本文将详细介绍文档节点document的内 ...
- Java获取路径方法&相对路径读取xml文件方法
(1).request.getRealPath("/");//不推荐使用获取工程的根路径 (2).request.getRealPath(request.getRequestURI ...
- java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查
一.XML和String互转: 使用dom4j程式变得很简单 //字符串转XML String xmlStr = \"......\"; Document document = D ...
- 分享非常有用的Java程序 (关键代码)(六)---解析/读取XML 文件(重要)
原文:分享非常有用的Java程序 (关键代码)(六)---解析/读取XML 文件(重要) XML文件 <?xml version="1.0"?> <student ...
- java+反射+多线程+生产者消费者模式+读取xml(SAX)入数据库mysql-【费元星Q9715234】
java+反射+多线程+生产者消费者模式+读取xml(SAX)入数据库mysql-[费元星Q9715234] 说明如下,不懂的问题直接我[费元星Q9715234] 1.反射的意义在于不将xml tag ...
- 【XML】利用Dom4j读取XML文档以及写入XML文档
Dom4j简介 dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,它的性能 ...
- 解决Spring的java项目打包后执行出现“无法读取方案文档...“、“原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是...”问题
问题 一个用Spring建的java项目,在Eclipse或idea中运行正常,为什么打包后运行出现如下错误呢? 2019/07/10/19:04:07 WARN [main] org.springf ...
- java中读取word文档里的内容
package com.cn.peitest.excel.word; import java.io.FileInputStream; import java.io.FileOutputStream; ...
- 突发奇想之:源码及文档,文档包括源码---xml格式的源码,文档源码合并;注释文档化,文档代码化;
目前源码和文档一般都是分开的,我在想为什么 源码不就是最好的文档么? 但是一般源码都是文本text的,格式化需要人为统一规范,所以源码中的文档在现实中不是那么的易于实践. 而且 源码 不能包括图片.附 ...
- xml基础之二(XML结构【2】)DTD文档模版
xml基础之二(XML结构[2])DTD文档模版 xml 模板 文档结构 我们知道XML主要用于数据的存储和传输,所以无论是自定义还是外部引用DTD模板文档,都是为了突出数据的存储规范.DTD(文档 ...
随机推荐
- iOS开发之新浪微博山寨版代码优化
之前发表过一篇博客“IOS开发之新浪围脖”,在编写代码的时候太偏重功能的实现了,写完基本功能后看着代码有些别扭,特别是用到的四种cell的类,重复代码有点多,所以今天花点时间把代码重构一下.为了减少代 ...
- MySQL分区总结
MySQL支持RANGE,LIST,HASH和KEY四种分区.其中,每个分区又都有一种特殊的类型.对于RANGE分区,有RANGE COLUMNS分区.对于LIST分区,有LIST COLUMNS分区 ...
- IDDD 实现领域驱动设计-一个简单业务用例的回顾和理解
上一篇:<IDDD 实现领域驱动设计-由贫血导致的失忆症> 这篇博文是对<实现领域驱动设计>第一章后半部分内容的理解. Domain Experts-领域专家 这节点内容是昨天 ...
- Java多线程系列--“JUC锁”01之 框架
本章,我们介绍锁的架构:后面的章节将会对它们逐个进行分析介绍.目录如下:01. Java多线程系列--“JUC锁”01之 框架02. Java多线程系列--“JUC锁”02之 互斥锁Reentrant ...
- iOS_UIImage_毛玻璃效果
效果图: 核心方法: // 出入UIImage 和 blur模糊成度 (0-1) - (UIImage *)blurryImage:(UIImage *)image withBlurLevel:(CG ...
- 初识openstack
<1>虚拟化技术的功能和特点 多个虚拟机运行在一台物理服务器上,虚拟机之间共享物理资源,虚拟机可以分别安装不同的操作系统,应用程序相互隔离. 虚拟化技术的优势:虚拟机的操作系统和应用程序不 ...
- Android之assets资源
assets目录下存放的原生资源文件,通过getAssets()方法获取. 使用: InputStream inputStream; try { inputStream = getAssets().o ...
- 大型网站提速关键技术(页面静态化,memcached,MySql优化)(三)
页面静态化的技术实现有两种方式 使用PHP自己的缓存机制 先说明一下OB缓存的机制. ob1.php 代码:说明的ob的各个用法->项目中 ☞ 如何打开ob缓存 ① 配置php.ini ...
- 移动端click事件延迟300ms问题
因为历史原因,移动端点击事件会有300ms延迟,来判断用户是连续双击缩放还是点击跳转.即如果300ms内连续点击两次,则会理解为对页面进行缩放操作(当然前提是移动端页面设置为可缩放的):在一次点击之后 ...
- Post方式打开新窗口
最近在做一个跟ERP相连的领料网站,用到POST的方法打开新窗口来打印报表 代码转别人的,在这里记一下: javascript代码 function openPostWindow(url, data1 ...