博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java XML解析工具 dom4j介绍及使用实例
阅读量:6306 次
发布时间:2019-06-22

本文共 4762 字,大约阅读时间需要 15 分钟。

 

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

 

dom4j介绍

  dom4j的项目地址:

  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个空格,并且另起一行为true        XMLWriter 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文档:

hello Text
world text

 

 

 

 

程序实例2

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

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

 

hello Text1
hello Text2
hello Text3
world text1
world text2
world text3

 

  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
childList = root.elements(); System.out.println("total child count: " + childList.size()); // 获取特定名称的子元素 List
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的Document Document document3 = domReader.read(document2); Element rootElement = document3.getRootElement(); System.out.println("Root: " + rootElement.getName()); }}

  代码运行后输出:

Root: studentstotal child count: 6hello child: 3first World Attr: name=wangwu迭代输出-----------------------lisilisi2lisi3wangwuwangwu2null用DOMReader-----------------------Root: students

 

 

 

 

参考资料

  圣思园张龙老师XML视频教程。

  源代码下载处:

  搜索dom4j:

 

转载于:https://www.cnblogs.com/gscq073240/articles/7197223.html

你可能感兴趣的文章
bash数组
查看>>
Richard M. Stallman 给《自由开源软件本地化》写的前言
查看>>
oracle数据库密码过期报错
查看>>
修改mysql数据库的默认编码方式 .
查看>>
zip
查看>>
How to recover from root.sh on 11.2 Grid Infrastructure Failed
查看>>
rhel6下安装配置Squid过程
查看>>
《树莓派开发实战(第2版)》——1.1 选择树莓派型号
查看>>
在 Linux 下使用 fdisk 扩展分区容量
查看>>
结合AlphaGo算法和大数据的量化基本面分析法探讨
查看>>
如何在 Ubuntu Linux 16.04 LTS 中使用多个连接加速 apt-get/apt
查看>>
《OpenACC并行编程实战》—— 导读
查看>>
机器学习:用初等数学解读逻辑回归
查看>>
如何在 Ubuntu 中管理和使用逻辑卷管理 LVM
查看>>
Oracle原厂老兵:从负面案例看Hint的最佳使用方式
查看>>
把自己Github上的代码添加Cocoapods支持
查看>>
C语言OJ项目参考(2493)四则运算
查看>>
零基础入门深度学习(二):神经网络和反向传播算法
查看>>
find和xargs
查看>>
数据结构例程—— 交换排序之快速排序
查看>>