XML_Dom4j的使用

本文介绍了DOM4J的基本背景及使用方法,包括如何导入jar包、查询操作、添加子节点、移除和修改子节点等内容。适用于希望了解或使用DOM4J进行XML文件操作的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DOM4J的背景
 Dom4j是一个简单、灵活的开放源代码的库。Dom4j是由早期开发JDOM的人分离出来后而独立开发的。Dom4J使用接口和抽象基类,虽然Dom4J的API相对要复杂一些,但是它提供了比JDOM更好的灵活性。

1. Dom4J的jar包介绍
 Dom4J属于第三方插件,我们在下载完之后,将其解压如下:
DOM4J的解压包

名称作用
docs存放的是dom4j的文档
lib存放的是跟dom4j相关的jar包
src存放源码
xml存放的是一些配置文件


2. 导入JAR包
 因为dom4J是属于第三方插件,所以要使用dom4J,我们必须将其jar包导入到lib目录下。找到dom4j-1.6.1.jar(1.6.1是版本号),放进Wroot – WEB INF – lib下。

3. DOM4J查询操作
 DOM4J查找节点的文本内容,需要一层一层去查找内容,通过根节点去查找子节点,再查找子节点的子节点。

//创建解析器:new SAXReader()
SAXReader reader = new SAXReader();
//解析XML,返回Document对象:read(File file);
Document document = reader.read("src/book.xml");
//获取根节点:getRootElement();
Element root = document.getRootElement();
//获取根节点的子节点:root.elements(标签名)
List<Elemtnt> first = root.elements("XXX");//XXX是节点的名字(String类型)

//返回List集合,可以遍历集合或者getIndex()获取Element对象
//获取文本 getText()

4. DOM4J在末尾添加子节点
 添加子节点是在查询的基础上进行的。
先看下xml中没有改变的内容是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<书架> 
  <> 
    <书名>javaweb开发大全</书名>  
    <作者>班长</作者>  
    <售价>99.8元</售价>  
    <简介>这是不错啊</简介> 
  </>  
  <> 
    <书名>葵花宝典</书名>  
    <作者>岳不群</作者>  
    <售价>99.8两</售价>  
    <简介>欲练此功...</简介> 
  </> 
</书架>

下面是在末尾添加子节点的代码:

        //获取解析器
        SAXReader reader = new SAXReader();
        //解析XML,返回Document对象
        Document document = reader.read("src/book2.xml");
        //获取根节点
        Element root = document.getRootElement();
        //获取第二本书
        Element book2 = (Element) root.elements("书").get(1);
        //直接在第二本书下添加子节点,设置文本内容
        book2.addElement("猫").setText("这TM是猫?");

        //回写
        FileOutputStream fos = new FileOutputStream("src/book2.xml");//创建流
        XMLWriter writer = new XMLWriter(fos);  //回写类
        writer.write(document); //回写文档对象
        writer.close();     //关闭流

执行后的结果为:

<?xml version="1.0" encoding="UTF-8"?>
<书架> 
  <> 
    <书名>javaweb开发大全</书名>  
    <作者>班长</作者>  
    <售价>99.8元</售价>  
    <简介>这是不错啊</简介> 
  </>  
  <> 
    <书名>葵花宝典</书名>  
    <作者>岳不群</作者>  
    <售价>99.8两</售价>  
    <简介>欲练此功...</简介> 
  <>这TM是猫?</></> 
</书架>

但是格式有点乱,我们可以通过设置来搞定:

//设置格式
OutputFormat Peopleformat = OutputFormat.createPrettyPrint();//适用于人看
OutputFormat PCformat = OutputFormat.createPrettyPrint();//适用于电脑

//设置编码集,也可以不设置,默认编码集为"UTF-8"
Peopleformat.setEncoding("GBK");

//然后在原本回写类的后面添加一个参数format,就是上面的设置的格式
XMLWriter writer = new XMLWriter(fos,format);   //回写类

5. 在指定位置添加子节点

        //获取解析对对象
        SAXReader reader = new SAXReader();
        //解析XML
        Document document = reader.read("src/book2.xml");
        //获取根节点
        Element root = document.getRootElement();
        //获取第二本书节点
        Element book = (Element) root.elements("书").get(1);
        //获取第二本书下的所有子节点,返回List集合
        List<Element> list = book.elements();
        //创建元素对象,DocumentHelper.createrElement("狗");
        Element dog = DocumentHelper.createElement("狗");
        //给这个节点设置文本内容
        dog.setText("马萨卡!!是狗???");
        //在指定的位置上进行添加,前面一个参数是索引
        list.add(1,dog);
        //回写
        回写的具体代码可以参照上面 在节点末尾添加子节点代码中的回写。

6. 移除和修改子节点

和上面代码一样,获取到 第二本书的节点
        //获取书的节点

        //获取猫节点
        Element cat = book.element("猫");

        //修改节点内容
        cat.setText("猫和老鼠");
        //移除猫的节点
        book.remove(cat);

        //回写

和上面一样,进行回写
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值