XML——Java使用Dom4j工具類操做XML文件學習筆記

學習了下dom4j工具的基本操做方法,將練習的代碼記錄一下。java

1.要操做的xml文件:book.xmlbash

<?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代碼dom

//========================================================	
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();
    }	
//========================================================
複製代碼
相關文章
相關標籤/搜索