专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

XMLJava使用Dom4j工具类操作XML文件学习笔记

学习了下dom4j工具的基本操作方法,将练习的代码记录一下。

1、要操作的xml文件:book.xml

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

<书架> 
  <书 出版社="TC"> 
    <书名>Java</书名>  
    <作者>Java Author</作者>  
    <售价>9.99</售价>  
    <简介>Java Book</简介>  
    <出版日期>1999-09-09</出版日期> 
  </书>  
  <书 出版社="TT"> 
    <书名>AI</书名>  
    <团购价>5.99</团购价>  
    <作者>AI Author</作者>  
    <售价>69.99</售价>  
    <简介>AI Java</简介> 
  </书> 
</书架>

2、Java代码

//========================================================  
package dom4j;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import javax.xml.parsers.SAXParserFactory;
import java.util.List;

/**
 * @author Hiseico
 * @create 2018-05-18 14:46
 * @desc
 **/
public class Demo4jTest {
    public static void main(String[] args) throws DocumentException {
        getTextContent();
    }

    /**
     * 获取第二本书
     */
    public static void getTextContent() throws DocumentException {
        //    获取解析器对象
        SAXReader saxReader = new SAXReader();
        //    解析XML,返回Document对象
        Document document = saxReader.read("src/dom4j/book.xml");
        //    获取根节点(书架标签)
        Element root = document.getRootElement();
        //    获取书的节点,获取第二本书
        List<Element> books = root.elements("书");
        Element book2 = books.get(1);
        //    获取作者的标签
        Element author2 = book2.element("作者");
        //    获取文本内容
        System.out.println(author2.getText());
    }
}
//========================================================

    /**
     * 在第二本书下添加子节点
     */
    public static void addElement() throws DocumentException, IOException {
        //获取解析器对象
        SAXReader saxReader = new SAXReader();
        //解析XML,返回Document对象
        Document document = saxReader.read("src/dom4j/book.xml");
        //获取根节点
        Element root = document.getRootElement();
        //获取第二本书
        Element book2 = (Element) root.elements("书").get(1);
        //可以直接在第二本书下添加子节点,设置文本内容
        book2.addElement("出版日期").setText("2018-07-05");
        //    回写
        //XML文档格式化
        OutputFormat format = OutputFormat.createPrettyPrint();
        //XML文档格式压缩
        //OutputFormat format1 = OutputFormat.createCompactFormat();
        //设置XML文件编码
        format.setEncoding("UTF-8");
        //document.setXMLEncoding("GBK");
        //回写类
        XMLWriter writer = new XMLWriter(new FileOutputStream("src/dom4j/book.xml"), format);
        //回写到文档
        writer.write(document);
        //关闭输出流
        writer.close();
    }
//========================================================
    /**
     * 第二本书的作者标签之前添加团购价的标签
     * 在指定的位置添加子节点
     */
    public static void addElementINSomeWhere() throws DocumentException, IOException {
        //    List
        //    获取解析器对象
        SAXReader saxReader = new SAXReader();
        //    解析XML
        Document document = saxReader.read("src/dom4j/book.xml");
        //    获取根节点
        Element root = document.getRootElement();
        //    获取第二本书
        Element book2 = (Element) root.elements("书").get(1);
        //    获取书下的所有子节点,返回List集合
        List<Element> list = book2.elements();
        //    创建元素对象 DocumentHelper.createElement("NodeName");
        Element groupBuy = DocumentHelper.createElement("团购价");
        groupBuy.setText("5.99");
        //    list.add(index,Element)
        list.add(1, groupBuy);
        //格式化xml
        OutputFormat format = OutputFormat.createPrettyPrint();
        //    回写
        XMLWriter writer = new XMLWriter(new FileOutputStream("src/dom4j/book.xml"), format);
        writer.write(document);
        writer.close();
    }       
//========================================================
 /**
     * 删除子节点
     * 删除第二本书下的出版日期节点
     */
    public static void delElement() throws DocumentException, IOException {
        //    获取解析器对象
        SAXReader saxReader = new SAXReader();
        //    解析XML
        Document document = saxReader.read("src/dom4j/book.xml");
        //    获取根节点
        Element root = document.getRootElement();
        //获取出版日期节点
        Element book2 = (Element) root.elements("书").get(1);
        Element createBookDate = book2.element("出版日期");
        //通过父节点删除出版日期
        book2.remove(createBookDate);
        //格式化xml文档
        OutputFormat format = OutputFormat.createPrettyPrint();
        //回写XML文档
        XMLWriter writer = new XMLWriter(new FileOutputStream("src/dom4j/book.xml"), format);
        writer.write(document);
        writer.close();
    }   
//========================================================
    /**
     * 修改文本内容
     */
    public static void editElementContext() throws DocumentException, IOException {
        //    获取解析器对象
        SAXReader saxReader = new SAXReader();
        //    解析XML
        Document document = saxReader.read("src/dom4j/book.xml");
        //获取根节点
        Element root = document.getRootElement();
        //获取要修改的节点的父节点
        Element book2 = (Element) root.elements("书").get(0);
        //获取要修改的节点
        Element editElement = book2.element("出版日期");
        //设置新的内容
        editElement.setText("1999-09-09");
        //格式化xml
        OutputFormat format = OutputFormat.createPrettyPrint();
        //回写xml文档
        XMLWriter writer = new XMLWriter(new FileOutputStream("src/dom4j/book.xml"), format);
        writer.write(document);
        writer.close();
    }   
//========================================================

文章永久链接:https://tech.souyunku.com/47575

未经允许不得转载:搜云库技术团队 » XMLJava使用Dom4j工具类操作XML文件学习笔记

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们