Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 258|回复: 0

[默认分类] Java XML解析工具 dom4j介绍及使用实例

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-5-23 13:41:32 | 显示全部楼层 |阅读模式
      
    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文档,代码如下:
      

    1. package com.example.xml.dom4j;
    2. import java.io.FileOutputStream;
    3. import java.io.FileWriter;
    4. import org.dom4j.Document;
    5. import org.dom4j.DocumentHelper;
    6. import org.dom4j.Element;
    7. import org.dom4j.io.OutputFormat;
    8. import org.dom4j.io.XMLWriter;
    9. /**
    10. * dom4j框架学习 使用dom4j框架创建xml文档并输出保存
    11. *
    12. */
    13. public class Dom4JTest1
    14. {
    15.     public static void main(String[] args) throws Exception
    16.     {
    17.         // 第一种方式:创建文档,并创建根元素
    18.         // 创建文档:使用了一个Helper类
    19.         Document document = DocumentHelper.createDocument();
    20.         // 创建根节点并添加进文档
    21.         Element root = DocumentHelper.createElement("student");
    22.         document.setRootElement(root);
    23.         // 第二种方式:创建文档并设置文档的根元素节点
    24.         Element root2 = DocumentHelper.createElement("student");
    25.         Document document2 = DocumentHelper.createDocument(root2);
    26.         // 添加属性
    27.         root2.addAttribute("name", "zhangsan");
    28.         // 添加子节点:add之后就返回这个元素
    29.         Element helloElement = root2.addElement("hello");
    30.         Element worldElement = root2.addElement("world");
    31.         helloElement.setText("hello Text");
    32.         worldElement.setText("world text");
    33.         // 输出
    34.         // 输出到控制台
    35.         XMLWriter xmlWriter = new XMLWriter();
    36.         xmlWriter.write(document);
    37.         // 输出到文件
    38.         // 格式
    39.         OutputFormat format = new OutputFormat("    ", true);// 设置缩进为4个空格,并且另起一行为true
    40.         XMLWriter xmlWriter2 = new XMLWriter(
    41.                 new FileOutputStream("student.xml"), format);
    42.         xmlWriter2.write(document2);
    43.         // 另一种输出方式,记得要调用flush()方法,否则输出的文件中显示空白
    44.         XMLWriter xmlWriter3 = new XMLWriter(new FileWriter("student2.xml"),
    45.                 format);
    46.         xmlWriter3.write(document2);
    47.         xmlWriter3.flush();
    48.         // close()方法也可以
    49.     }
    50. }
    复制代码


      
      程序Console输出:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <student/>
    复制代码


      生成的一个xml文档:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <student name="zhangsan">
    3.     <hello>hello Text</hello>
    4.     <world>world text</world>
    5. </student>
    复制代码


      
      
      
      
    程序实例2
      程序实例2,读入xml文档并分析,将其内容输出。
      首先,待分析的文档如下:
      

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <students name="zhangsan">
    3.     <hello name="lisi">hello Text1</hello>
    4.     <hello name="lisi2">hello Text2</hello>
    5.     <hello name="lisi3">hello Text3</hello>
    6.     <world name="wangwu">world text1</world>
    7.     <world name="wangwu2">world text2</world>
    8.     <world >world text3</world>
    9. </students>
    复制代码


      
      Java代码:

    1. package com.example.xml.dom4j;
    2. import java.io.File;
    3. import java.util.Iterator;
    4. import java.util.List;
    5. import javax.xml.parsers.DocumentBuilder;
    6. import javax.xml.parsers.DocumentBuilderFactory;
    7. import org.dom4j.Document;
    8. import org.dom4j.Element;
    9. import org.dom4j.io.DOMReader;
    10. import org.dom4j.io.SAXReader;
    11. /**
    12. * dom4j框架学习: 读取并解析xml
    13. *
    14. *
    15. */
    16. public class Dom4JTest2
    17. {
    18.     public static void main(String[] args) throws Exception
    19.     {
    20.         SAXReader saxReader = new SAXReader();
    21.         Document document = saxReader.read(new File("students.xml"));
    22.         // 获取根元素
    23.         Element root = document.getRootElement();
    24.         System.out.println("Root: " + root.getName());
    25.         // 获取所有子元素
    26.         List<Element> childList = root.elements();
    27.         System.out.println("total child count: " + childList.size());
    28.         // 获取特定名称的子元素
    29.         List<Element> childList2 = root.elements("hello");
    30.         System.out.println("hello child: " + childList2.size());
    31.         // 获取名字为指定名称的第一个子元素
    32.         Element firstWorldElement = root.element("world");
    33.         // 输出其属性
    34.         System.out.println("first World Attr: "
    35.                 + firstWorldElement.attribute(0).getName() + "="
    36.                 + firstWorldElement.attributeValue("name"));
    37.         System.out.println("迭代输出-----------------------");
    38.         // 迭代输出
    39.         for (Iterator iter = root.elementIterator(); iter.hasNext();)
    40.         {
    41.             Element e = (Element) iter.next();
    42.             System.out.println(e.attributeValue("name"));
    43.         }
    44.         System.out.println("用DOMReader-----------------------");
    45.         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    46.         DocumentBuilder db = dbf.newDocumentBuilder();
    47.         // 注意要用完整类名
    48.         org.w3c.dom.Document document2 = db.parse(new File("students.xml "));
    49.         DOMReader domReader = new DOMReader();
    50.         // 将JAXP的Document转换为dom4j的Document
    51.         Document document3 = domReader.read(document2);
    52.         Element rootElement = document3.getRootElement();
    53.         System.out.println("Root: " + rootElement.getName());
    54.     }
    55. }
    复制代码


      代码运行后输出:

    1. Root: students
    2. total child count: 6
    3. hello child: 3
    4. first World Attr: name=wangwu
    5. 迭代输出-----------------------
    6. lisi
    7. lisi2
    8. lisi3
    9. wangwu
    10. wangwu2
    11. null
    12. 用DOMReader-----------------------
    13. Root: students
    复制代码


      
      
      
      
    参考资料
      圣思园张龙老师XML视频教程。
      源代码下载处:http://sourceforge.net/
      搜索dom4j:http://sourceforge.net/projects/dom4j/?source=directory
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-17 05:31 , Processed in 0.438517 second(s), 37 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表