Java XML解析工具 dom4j介绍及使用实例

dom4j介绍

  dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory

  dom4j是一个简单的开源库,用于处理XML、 XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP。

dom4j的使用

  下载了dom4j项目之后,解压缩,将其jar包(我的当前版本叫做dom4j-1.6.1.jar)加入class path下面。

  (Properties->Java Build Path -> Add External JARs...)。

  之后就可以使用其提供的API进行编程。

程序实例1

  第一个程序,用Java代码生成xml文档,代码如下:

package com.example.xml.dom4j;import java.io.FileOutputStream;
import java.io.FileWriter;import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;/*** dom4j框架学习 使用dom4j框架创建xml文档并输出保存* */
public class Dom4JTest1
{public static void main(String[] args) throws Exception{// 第一种方式:创建文档,并创建根元素// 创建文档:使用了一个Helper类Document document = DocumentHelper.createDocument();// 创建根节点并添加进文档Element root = DocumentHelper.createElement("student");document.setRootElement(root);// 第二种方式:创建文档并设置文档的根元素节点Element root2 = DocumentHelper.createElement("student");Document document2 = DocumentHelper.createDocument(root2);// 添加属性root2.addAttribute("name", "zhangsan");// 添加子节点:add之后就返回这个元素Element helloElement = root2.addElement("hello");Element worldElement = root2.addElement("world");helloElement.setText("hello Text");worldElement.setText("world text");// 输出// 输出到控制台XMLWriter xmlWriter = new XMLWriter();xmlWriter.write(document);// 输出到文件// 格式OutputFormat format = new OutputFormat("    ", true);// 设置缩进为4个空格,并且另起一行为trueXMLWriter xmlWriter2 = new XMLWriter(new FileOutputStream("student.xml"), format);xmlWriter2.write(document2);// 另一种输出方式,记得要调用flush()方法,否则输出的文件中显示空白XMLWriter xmlWriter3 = new XMLWriter(new FileWriter("student2.xml"),format);xmlWriter3.write(document2);xmlWriter3.flush();// close()方法也可以}
}

程序Console输出:

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

生成的一个xml文档:

<?xml version="1.0" encoding="UTF-8"?><student name="zhangsan"><hello>hello Text</hello><world>world text</world>
</student>

程序实例2

  程序实例2,读入xml文档并分析,将其内容输出。

  首先,待分析的文档如下:

<?xml version="1.0" encoding="UTF-8"?><students name="zhangsan"><hello name="lisi">hello Text1</hello><hello name="lisi2">hello Text2</hello><hello name="lisi3">hello Text3</hello><world name="wangwu">world text1</world><world name="wangwu2">world text2</world><world >world text3</world>
</students>

 Java代码:

package com.example.xml.dom4j;import java.io.File;
import java.util.Iterator;
import java.util.List;import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.DOMReader;
import org.dom4j.io.SAXReader;/*** dom4j框架学习: 读取并解析xml* * */
public class Dom4JTest2
{public static void main(String[] args) throws Exception{SAXReader saxReader = new SAXReader();Document document = saxReader.read(new File("students.xml"));// 获取根元素Element root = document.getRootElement();System.out.println("Root: " + root.getName());// 获取所有子元素List<Element> childList = root.elements();System.out.println("total child count: " + childList.size());// 获取特定名称的子元素List<Element> childList2 = root.elements("hello");System.out.println("hello child: " + childList2.size());// 获取名字为指定名称的第一个子元素Element firstWorldElement = root.element("world");// 输出其属性System.out.println("first World Attr: "+ firstWorldElement.attribute(0).getName() + "="+ firstWorldElement.attributeValue("name"));System.out.println("迭代输出-----------------------");// 迭代输出for (Iterator iter = root.elementIterator(); iter.hasNext();){Element e = (Element) iter.next();System.out.println(e.attributeValue("name"));}System.out.println("用DOMReader-----------------------");DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();DocumentBuilder db = dbf.newDocumentBuilder();// 注意要用完整类名org.w3c.dom.Document document2 = db.parse(new File("students.xml "));DOMReader domReader = new DOMReader();// 将JAXP的Document转换为dom4j的DocumentDocument document3 = domReader.read(document2);Element rootElement = document3.getRootElement();System.out.println("Root: " + rootElement.getName());}}

代码运行后输出:

Root: students
total child count: 6
hello child: 3
first World Attr: name=wangwu
迭代输出-----------------------
lisi
lisi2
lisi3
wangwu
wangwu2
null
用DOMReader-----------------------
Root: students

Java XML解析工具 dom4j介绍及使用实例相关推荐

  1. Java XML解析工具 JDOM介绍及使用实例

    Java XML解析工具 JDOM JDOM介绍 JDOM是一种使用XML的独特Java工具包,用于快速开发XML应用程序. 它的设计包含Java语言的语法乃至语义. JDOM是一个开源项目,它基于树 ...

  2. Java XML解析工具类

    Java XML解析工具类 Java解析XML的方式有很多,这里不一一说明了,利用三方jar包,实现了一个XML工具类 本身是有个需求,讲三方公司的XML请求文件中的Response里的属性赋值成ja ...

  3. java dom4j解析xml 对象_Java XML解析 - 利用DOM4j解析XML

    Java XML解析 - 利用DOM4j解析XML dom4j是一个简单的开源库,用于处理XML. XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP ...

  4. Java XML解析器

    使用Apache Xerces解析XML文档 一.技术概述 在用Java解析XML时候,一般都使用现成XML解析器来完成,自己编码解析是一件很棘手的问题,对程序员要求很高,一般也没有专业厂商或者开源组 ...

  5. 高效的Xml解析工具

    前言 大家在工作中不知道有没有遇到过类似的情况: 1.需要写代码解析一个xml文件时,发现需要导入dom4j的jar包,一时又找不到,然后还得浪费几分钟时间去找jar包. 2.好不容易找到了jar包, ...

  6. XML 解析技术:DOM4j

    前言: 我一直以来就坚信一句话:不积跬步无以至千里,不积小流无以成江海.可能很多人对一些基础概念会选择性忽略,但往往基础和知识理解深度决定你的上限. 今天给大家带来一个对框架以及容器源码理解提升的知识 ...

  7. java xml解析器_Java XML解析器

    java xml解析器 Java XML parser is used to work with xml data. XML is widely used technology to transpor ...

  8. java xml解析 jdom_Java XML解析 - 利用JDOM解析XML

    Java XML解析 - 利用JDOM解析XML JDOM是一个开源项目,它基于树形结构,利用纯Java的技术对XML文档实现解析.生成.序列化及多种操作.JDOM与DOM非常类似,它是处理XML的纯 ...

  9. java 之 xml 解析工具

    java 解析 xml 文件 转载自 : http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/17/3082949.html 众所周知,现在解析X ...

最新文章

  1. 利用C语言 Python校正图像,情人节来了,教你个用 Python 表白的技巧
  2. echart旭日图_150Echarts - 旭日图(Sunburst Label Rotate)
  3. python毕业设计论文-25 行 Python 代码毕业设计实现人脸识别
  4. 增大hadoop client内存
  5. 网络情况不稳定 无法连接服务器,提示网络正常无法连接服务器
  6. 【Python学习教程】:装饰器的详细教程,通俗易懂
  7. UVALive 8518 - Sum of xor sum
  8. js如何判断是否在iframe中及防止网页被别站用 iframe嵌套 (Load denied by X-Frame-Options)...
  9. php--- 转换编码
  10. SSH 上传下载文件
  11. Linux “身陷囹圄”?
  12. 【优化选址】基于matlab蚁群算法求解电动汽车充电站与换电站选址优化问题【含Matlab源码 1182期】
  13. spark安装以及hive on spark和spark on hive 的配置
  14. 转载 戴仁光:给专职站长的网络创业建议
  15. 利用python生成图片验证码
  16. Excel教程视频《Excel大神上分攻略》50个工作场景,从案例到实践
  17. 放慢脚步是为了走得更快
  18. python下载博文中微博图床图片
  19. react 调用子(孙)组件方法
  20. Stable Diffusion V2.1非标准分辨率图像高清渲染

热门文章

  1. Git Bash修改默认路径
  2. 沃尔沃加入英伟达阵营 2021年开卖自动驾驶汽车
  3. GIS开发随笔(2)——关于建立GIS数据库的几个问题
  4. SQLServer On Linux Package List on CentOS
  5. 算法系列之二十:计算中国农历(二)
  6. 学习成长就到鸿蒙思维,庆国庆,迎中秋,鸿蒙教育享双节99元开启思维之旅!!...
  7. linux生日_代码简介:让我们用25个Linux事实来庆祝Linux的25岁生日。
  8. java培训班如何选择
  9. 零基础学习java,这些书一定要看!
  10. 插槽 查看硬盘状态_摄影路上的“全能”伴侣 | LaCie DJI Copilot 移动硬盘