个人博客地址: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。

  1. package vastsum;
  2.  
  3. import java.io.File;
  4. import java.util.Iterator;
  5. import java.util.List;
  6.  
  7. import org.dom4j.Document;
  8. import org.dom4j.DocumentException;
  9. import org.dom4j.Element;
  10. import org.dom4j.Node;
  11. import org.dom4j.io.SAXReader;
  12.  
  13. /**
  14. * 读取下xml文档,获得document对象。
  15. * 本文为xml连载第一篇,以下代码可以直接运行,结尾附上源码下载地址。
  16. */
  17. class exmple {
  18. public static void main(String[] args) throws DocumentException
  19. {
  20. SAXReader reader = new SAXReader();
  21. Document document = reader.read(new File("./src/contact.xml"));
  22.  
  23. /**
  24. * 节点对象的操作方法
  25. */
  26.  
  27. //获取文档根节点
  28. Element root = document.getRootElement();
  29. //输出根标签的名字
  30. System.out.println(root.getName());
  31.  
  32. //获取根节点下面的所有子节点(不包过子节点的子节点)
  33. List<Element> list = root.elements() ;
  34. //遍历List的方法
  35. for (Element e:list){
  36. System.out.println(e.getName());
  37. }
  38.  
  39. //获得指定节点下面的子节点
  40. Element contactElem = root.element("contact");//首先要知道自己要操作的节点。
  41. List<Element> contactList = contactElem.elements();
  42. for (Element e:contactList){
  43. System.out.println(e.getName());
  44. }
  45.  
  46. //调用下面获取子节点的递归函数。
  47. getChildNodes(root);
  48.  
  49. //获得当前标签下指定名称的第一个子标签
  50. Element conElem = root.element("contact");
  51. System.out.println(conElem.getName());
  52.  
  53. //获得更深层次的标签(一层一层的获取)
  54. Element nameElem = root.element("contact").element("name");
  55. System.out.println(nameElem.getName());
  56. }
  57.  
  58. //递归查询节点函数,输出节点名称
  59. private static void getChildNodes(Element elem){
  60. System.out.println(elem.getName());
  61. Iterator<Node> it= elem.nodeIterator();
  62. while (it.hasNext()){
  63. Node node = it.next();
  64. if (node instanceof Element){
  65. Element e1 = (Element)node;
  66. getChildNodes(e1);
  67. }
  68.  
  69. }
  70. }
  71.  
  72. }

下面是对应的xml文件,文件名为contact.xml:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <contactList>
  3. <contact id="001" class="style">
  4. <name>张三</name>
  5. <age>20</age>
  6. <phone>134222223333</phone>
  7. <email>zhangsan@qq.com</email>
  8. <qq>432221111</qq>
  9. </contact>
  10. <contact id="002">
  11. <name>李四</name>
  12. <age>20</age>
  13. <phone>134222225555</phone>
  14. <email>lisi@qq.com</email>
  15. <qq>432222222</qq>
  16. </contact>
  17. <contactTwo>
  18. <name>王五</name>
  19. <age>32</age>
  20. <phone>465431341</phone>
  21. <emali>af@qq.com</emali>
  22. <qq>46164694</qq>
  23. </contactTwo>
  24. <test>测试</test>
  25. <test>其他用途</test>
  26. </contactList>

两个文件的目录如题所示:

Java获取XML节点总结之读取XML文档节点的更多相关文章

  1. 深入理解DOM节点类型第七篇——文档节点DOCUMENT

    × 目录 [1]特征 [2]快捷访问 [3]文档写入 前面的话 文档节点document,隶属于表示浏览器的window对象,它表示网页页面,又被称为根节点.本文将详细介绍文档节点document的内 ...

  2. Java获取路径方法&相对路径读取xml文件方法

    (1).request.getRealPath("/");//不推荐使用获取工程的根路径 (2).request.getRealPath(request.getRequestURI ...

  3. java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查

    一.XML和String互转: 使用dom4j程式变得很简单 //字符串转XML String xmlStr = \"......\"; Document document = D ...

  4. 分享非常有用的Java程序 (关键代码)(六)---解析/读取XML 文件(重要)

    原文:分享非常有用的Java程序 (关键代码)(六)---解析/读取XML 文件(重要) XML文件 <?xml version="1.0"?> <student ...

  5. java+反射+多线程+生产者消费者模式+读取xml(SAX)入数据库mysql-【费元星Q9715234】

    java+反射+多线程+生产者消费者模式+读取xml(SAX)入数据库mysql-[费元星Q9715234] 说明如下,不懂的问题直接我[费元星Q9715234] 1.反射的意义在于不将xml tag ...

  6. 【XML】利用Dom4j读取XML文档以及写入XML文档

    Dom4j简介 dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,它的性能 ...

  7. 解决Spring的java项目打包后执行出现“无法读取方案文档...“、“原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是...”问题

    问题 一个用Spring建的java项目,在Eclipse或idea中运行正常,为什么打包后运行出现如下错误呢? 2019/07/10/19:04:07 WARN [main] org.springf ...

  8. java中读取word文档里的内容

    package com.cn.peitest.excel.word; import java.io.FileInputStream; import java.io.FileOutputStream; ...

  9. 突发奇想之:源码及文档,文档包括源码---xml格式的源码,文档源码合并;注释文档化,文档代码化;

    目前源码和文档一般都是分开的,我在想为什么 源码不就是最好的文档么? 但是一般源码都是文本text的,格式化需要人为统一规范,所以源码中的文档在现实中不是那么的易于实践. 而且 源码 不能包括图片.附 ...

  10. xml基础之二(XML结构【2】)DTD文档模版

    xml基础之二(XML结构[2])DTD文档模版 xml 模板 文档结构  我们知道XML主要用于数据的存储和传输,所以无论是自定义还是外部引用DTD模板文档,都是为了突出数据的存储规范.DTD(文档 ...

随机推荐

  1. 延时调用--deferred.js原码分析

    有些时候,我们需要等待上一个操作完成之后,才能进行下一步的操作.比如Ajax实现自动提交表单操作的时候,程序需要等待,一旦有返回结果了,则继续进行一下步操作. 这时deferred.js这个库就产生了 ...

  2. C/C++,彩色图像小游戏。

    这里声明,这个游戏是由本人,在大一暑假自作的第二个小游戏,转载请注明原帖地址,谢谢! 所有图片都是我一个人用ps搞出来的,比较简单.........毕竟不是学图像制作的,请体谅!另外,图片 不放出来了 ...

  3. Ftp上传下载 C#

    public class MyFtpClass { private readonly string _destIp; private readonly string _userName; privat ...

  4. AngularJS------认识AngularJS

    之前在C#中也经常使用MVC开发模式,对其的使用有一定的了解,但是现在需要学习AngularJS,这是纯前台的JS代码,那么为什么需要学习这个呢,就是想将验证这里全部在前台执行,不需要在后台代码里面出 ...

  5. .Net语言 APP开发平台——Smobiler学习日志:如何在手机上开发仪表盘控件

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的"S ...

  6. html5 前端图片处理(预览、压缩、缩放)

    现在手机图片是越来越大了,上传图片流量耗费巨大.同时预览也是一个问题,所以利用HTML5 file和canvas来解决这个问题. var upload = { _o: null,//对象id _aut ...

  7. System.Diagnostics.Process.Start的妙用

    我们经常会遇到在Winform或是WPF中点击链接或按钮打开某个指定的网址, 或者是需要打开电脑中某个指定的硬盘分区及文件夹, 甚至是"控制面板"相关的东西, 那么如何做呢? 答案 ...

  8. SharePoint创建web application出现“The password supplied with the username was not correct”错误的解决方法

    平台环境 Windows Server 2012 R2 Standard, SharePoint Server 2010, Microsoft SQL Server 2012 (SP1) 问题描述 在 ...

  9. 简谈asp.net下的异步加载

    具体我本身大概用的就有两种,需配合JQ. 第一种,直接通过AJAX去请求页面:例如, 1:dataType必须是html或者Text格式, 2:Type:必须是'Post'请求 3:后台Load事件必 ...

  10. java堆和栈的区别

    java 的内存分为两类,一类是栈内存,一类是堆内存.栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这 ...