XML——Java使用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();
    }	
//========================================================
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值