Java XML解析工具 dom4j介绍及使用实例
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介绍及使用实例相关推荐
- Java XML解析工具 JDOM介绍及使用实例
Java XML解析工具 JDOM JDOM介绍 JDOM是一种使用XML的独特Java工具包,用于快速开发XML应用程序. 它的设计包含Java语言的语法乃至语义. JDOM是一个开源项目,它基于树 ...
- Java XML解析工具类
Java XML解析工具类 Java解析XML的方式有很多,这里不一一说明了,利用三方jar包,实现了一个XML工具类 本身是有个需求,讲三方公司的XML请求文件中的Response里的属性赋值成ja ...
- java dom4j解析xml 对象_Java XML解析 - 利用DOM4j解析XML
Java XML解析 - 利用DOM4j解析XML dom4j是一个简单的开源库,用于处理XML. XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP ...
- Java XML解析器
使用Apache Xerces解析XML文档 一.技术概述 在用Java解析XML时候,一般都使用现成XML解析器来完成,自己编码解析是一件很棘手的问题,对程序员要求很高,一般也没有专业厂商或者开源组 ...
- 高效的Xml解析工具
前言 大家在工作中不知道有没有遇到过类似的情况: 1.需要写代码解析一个xml文件时,发现需要导入dom4j的jar包,一时又找不到,然后还得浪费几分钟时间去找jar包. 2.好不容易找到了jar包, ...
- XML 解析技术:DOM4j
前言: 我一直以来就坚信一句话:不积跬步无以至千里,不积小流无以成江海.可能很多人对一些基础概念会选择性忽略,但往往基础和知识理解深度决定你的上限. 今天给大家带来一个对框架以及容器源码理解提升的知识 ...
- java xml解析器_Java XML解析器
java xml解析器 Java XML parser is used to work with xml data. XML is widely used technology to transpor ...
- java xml解析 jdom_Java XML解析 - 利用JDOM解析XML
Java XML解析 - 利用JDOM解析XML JDOM是一个开源项目,它基于树形结构,利用纯Java的技术对XML文档实现解析.生成.序列化及多种操作.JDOM与DOM非常类似,它是处理XML的纯 ...
- java 之 xml 解析工具
java 解析 xml 文件 转载自 : http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/17/3082949.html 众所周知,现在解析X ...
最新文章
- 利用C语言 Python校正图像,情人节来了,教你个用 Python 表白的技巧
- echart旭日图_150Echarts - 旭日图(Sunburst Label Rotate)
- python毕业设计论文-25 行 Python 代码毕业设计实现人脸识别
- 增大hadoop client内存
- 网络情况不稳定 无法连接服务器,提示网络正常无法连接服务器
- 【Python学习教程】:装饰器的详细教程,通俗易懂
- UVALive 8518 - Sum of xor sum
- js如何判断是否在iframe中及防止网页被别站用 iframe嵌套 (Load denied by X-Frame-Options)...
- php--- 转换编码
- SSH 上传下载文件
- Linux “身陷囹圄”?
- 【优化选址】基于matlab蚁群算法求解电动汽车充电站与换电站选址优化问题【含Matlab源码 1182期】
- spark安装以及hive on spark和spark on hive 的配置
- 转载 戴仁光:给专职站长的网络创业建议
- 利用python生成图片验证码
- Excel教程视频《Excel大神上分攻略》50个工作场景,从案例到实践
- 放慢脚步是为了走得更快
- python下载博文中微博图床图片
- react 调用子(孙)组件方法
- Stable Diffusion V2.1非标准分辨率图像高清渲染
热门文章
- Git Bash修改默认路径
- 沃尔沃加入英伟达阵营 2021年开卖自动驾驶汽车
- GIS开发随笔(2)——关于建立GIS数据库的几个问题
- SQLServer On Linux Package List on CentOS
- 算法系列之二十:计算中国农历(二)
- 学习成长就到鸿蒙思维,庆国庆,迎中秋,鸿蒙教育享双节99元开启思维之旅!!...
- linux生日_代码简介:让我们用25个Linux事实来庆祝Linux的25岁生日。
- java培训班如何选择
- 零基础学习java,这些书一定要看!
- 插槽 查看硬盘状态_摄影路上的“全能”伴侣 | LaCie DJI Copilot 移动硬盘