src/student.xmljava
<?xml version="1.0" encoding="UTF-8" ?>dom
<students>spa
<student number="itcast_0001">.net
<name>tom</name>orm
<age>18</age>xml
<sex>male</sex>對象
</student>element
<student number="itcast_0002">資源
<name>jerry</name>rem
<age>16</age>
<sex>female</sex>
</student>
</students>
import java.io.File;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
public class Demo1 {
/**
* 將xml文檔 加載,得到document對象,
* 將document對象 以字符串的形式輸出
* @throws DocumentException
*/
public static void main(String[] args) throws DocumentException {
//1 建立解析器
SAXReader reader = new SAXReader();
//2 使用解析器,加載文檔
Document document = reader.read(new File("src/student.xml"));
//3 將文檔對象轉化成string
String xml = document.asXML();
System.out.println(xml);
}
}
import java.io.File;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Demo2 {
/**
* 查 ==> 文檔中全部學生信息
* @throws DocumentException
*/
public static void main(String[] args) throws DocumentException {
//1 建立解析器
SAXReader reader = new SAXReader();
//2 使用解析器,加載文檔
Document document = reader.read(new File("src/student.xml"));
//3 得到根元素
Element students = document.getRootElement();
//4 迭代根元素下的全部student元素
Iterator<Element> it = students.elementIterator("student");
while(it.hasNext()){
Element student = it.next();
//5 得到student元素上的number屬性
String number = student.attributeValue("number");
System.out.println(number);
//6 再找 student元素下的name age sex 子元素
//7 得到子元素的內容
Element nameELe = student.element("name");
String name = nameELe.getText();
String age = student.elementText("age");
String sex = student.elementText("sex");
System.out.println(name+"==>"+age+"==>"+sex);
}
}
}
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class Demo3_2 {
/**
* 增: 增長一個學生 itcast_0003 傑克 20 male
* @throws DocumentException
* @throws IOException
*/
public static void main(String[] args) throws DocumentException, IOException {
//1 建立解析器
SAXReader reader = new SAXReader();
//2 使用解析器,加載文檔
Document document = reader.read(new File("src/student.xml"));
//3 得到根元素
Element root = document.getRootElement();
//4 爲根元素添加student子元素,和屬性.
Element studentEle = root.addElement("student").addAttribute("number", "itcast_0003");
//5 爲student添加 name age sex 子元素和內容
studentEle.addElement("name").addText("傑克");
studentEle.addElement("age").addText("20");
studentEle.addElement("sex").addText("male");
//6 回寫
//1>建立格式化器
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8"); //解碼 encoding="UTF-8"
//2>建立寫入器
//XMLWriter writer = new XMLWriter(new FileWriter("src/student_copy.xml"),format);
//XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/student_copy.xml"),"GBK"),format);
XMLWriter writer = new XMLWriter(new FileOutputStream("src/student_copy.xml") ,format);
//3>將文檔寫入文件
writer.write(document);
//4>關閉資源
writer.close();
//簡單的不亂碼的方法: 使用字節流寫入, 不要使用字符流. 使用字節流永遠不會亂碼.
}
}
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class Demo4_2 {
/**
* 刪除: 刪除學號爲itcast_0001 的學生
* @throws DocumentException
* @throws IOException
*/
public static void main(String[] args) throws DocumentException, IOException {
//1 建立解析器
SAXReader reader = new SAXReader();
//2 使用解析器,加載文檔
Document document = reader.read(new File("src/student.xml"));
//3 定義xpath表達式
String xpath ="//student[@number='itcast_0001']";
//4 根據xpath找出要刪除的元素
Element stuEle = (Element) document.selectSingleNode(xpath);
//5 刪除
stuEle.getParent().remove(stuEle);
//6回寫
//1>新建格式化器
OutputFormat format = OutputFormat.createPrettyPrint();
//2>新建寫入器
XMLWriter writer = new XMLWriter(new FileOutputStream("src/student_copy.xml"),format);
//3>寫入
writer.write(document);
//4>關閉資源
writer.close();
}
}