傳智播客培訓2.21 XML編程
先看一個book.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<書架>
<書>
<書名 >javaweb開發</書名>
<作者 name="zxx">張孝祥</作者>
<售價>69.0元</售價>
</書>
<書>
<書名 >java開發</書名>
<作者 name="老張">張孝祥</作者>
<售價>69.0元</售價>
</書>
</書架>
下麵是對這個XML文件的一些常見操作:
- package cn.itcast.dom4j;
- import java.io.FileOutputStream;
- import java.io.OutputStreamWriter;
- import java.io.Writer;
- import java.util.List;
- import org.dom4j.Document;
- import org.dom4j.DocumentException;
- import org.dom4j.DocumentHelper;
- import org.dom4j.Element;
- import org.dom4j.io.OutputFormat;
- import org.dom4j.io.SAXReader;
- import org.dom4j.io.XMLWriter;
- import org.junit.Test;
- // Dom4j 增刪改查
- public class Dom4jDemo {
- // 查找第一本書的名字
- @Test
- public void find() throws Exception {
- // 1.創建解析器對象
- SAXReader reader = new SAXReader();
- // 2.解析一個xml
- Document document = reader.read("src/book.xml");
- // 3.獲得根元素
- Element rootElement = document.getRootElement();
- // 4.獲得書節點
- Element bookElement = rootElement.element("書"); // 獲得第一個指定名稱的子節點
- // 5.獲得書名節點
- Element booknameElement = bookElement.element("書名");
- // 6.輸出元素的內容
- String text = booknameElement.getText();
- System.out.println(text);
- }
- // 查找第二本書作者節點的name屬性
- @Test
- public void findAttribute() throws Exception {
- // 獲得Document
- Document document = Dom4jUtils.getDocument();
- // 獲得第二本書的作者節點
- // 根元素
- Element rootElement = document.getRootElement();
- // 獲得第二本書
- List<Element> elements = rootElement.elements("書");
- Element bookElement = elements.get(1);
- // 獲得作者
- Element authorElement = bookElement.element("作者");
- String value = authorElement.attributeValue("name");
- System.out.println(value);
- }
- // 增加一個節點, 第二本書增加一個售價
- @Test
- public void add() throws Exception {
- // 獲得Document
- Document document = Dom4jUtils.getDocument();
- // 獲得根元素
- Element rootElement = document.getRootElement();
- // 獲得第二本書
- Element bookElement = (Element) rootElement.elements("書").get(1);
- /* 傳統方式
- // 創建一個售價節點
- Element priceElement = DocumentHelper.createElement("售價");
- // 添加內容
- priceElement.setText("108元");
- // 加到書節點下麵
- bookElement.add(priceElement);*/
- // addElement方法創建了新元素,添加到當前元素下麵,返回了新創建的元素
- bookElement.addElement("售價").setText("108元");
- // 寫入xml
- Dom4jUtils.write2Xml(document);
- }
- //增加一個屬性
- @Test
- public void addAttribute() throws Exception {
- // 獲得Document
- Document document = Dom4jUtils.getDocument();
- // 獲得根元素
- Element rootElement = document.getRootElement();
- // 獲得第一個作者
- Element author = rootElement.element("書").element("作者");
- // 增加一個屬性
- author.addAttribute("name", "zxx");
- // 寫入文件
- Dom4jUtils.write2Xml(document);
- }
- //刪除一個節點
- @Test
- public void remove() throws Exception {
- // 獲得Document
- Document document = Dom4jUtils.getDocument();
- // 獲得根元素
- Element rootElement = document.getRootElement();
- // 獲得第二本書的第二個售價節點
- Element priceElement = (Element) ((Element) rootElement.elements("書").get(1)).elements("售價").get(1);
- // 獲得它的父節點刪除自身
- priceElement.getParent().remove(priceElement);
- // 寫入文件
- Dom4jUtils.write2Xml(document);
- }
- }
Dom4jUtils.java文件:
package cn.itcast.dom4j;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.UnsupportedEncodingException;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class Dom4jUtils {
// 獲得document對象
public static Document getDocument() throws DocumentException {
// 1.創建解析器對象
SAXReader reader = new SAXReader();
// 2.解析一個xml
return reader.read("src/book.xml");
}
public static void write2Xml(Document document) throws Exception {
// 寫入xml
// FileWriter流默認是用gb2312編碼
//FileWriter out = new FileWriter("src/book.xml");
/* 快捷的輸出方式
Writer out = new OutputStreamWriter(new FileOutputStream("src/book.xml"), "utf-8");
document.write(out);
out.close();*/
// 帶格式化的輸出方式
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
/*Writer out = new OutputStreamWriter(new FileOutputStream("src/book.xml"), "utf-8");
XMLWriter writer = new XMLWriter(out, format);*/
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"), format);
writer.write(document);
writer.close();
}
}
最後更新:2017-04-02 06:51:36