學習了下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();
}
//========================================================
複製代碼