DOM4J是什麼
DOM4J是針對Java開發人員專門提供的XML文檔解析規範,它不同與DOM,但與DOM相似。DOM4J針對Java開發人員而設計,所以對於Java開發人員來說,使用DOM4J要比使用DOM更加方便。
dom4j解析xml文件的步驟:
- 使用SAXReader來獲取document對象,document對象代表整個xml文檔,所以必須先獲取.
- 獲取完成後就可以對xml文件進行操作了,比如:增刪改查操作.
- 最後,如果進行了增刪改操作就必須保存document對象到xml文檔中.
下面開始介紹dom4j的使用方法:
導jar包的操作省略,本文章只講知識點
1. DOM4J獲取Document對象
使用DOM4J來加載XML文檔,需要先獲取SAXReader對象,然後通過SAXReader對象的read()方法來加載XML文檔:
//創建解析器
SAXReader reader = new SAXReader();
// reader.setValidation(true);
//得到document
Document doc = reader.read("src/students.xml");
2. DOM4J創建Document對象
DocumentHelper類有很多的createXXX()方法,用來創建各種Node對象。
Document doc = DocumentHelper.createDocument();
涉及的相關方法(包括對xml文檔常用的增刪改查方法):
- Element getRootElement():Document的方法,用來獲取根元素;
- List elements():Element的方法,用來獲取所有子元素;
- String attributeValue(String name):Element的方法,用來獲取指定名字的屬性值;
- Element element(String name):Element的方法,用來獲取第一個指定名字的子元素;
- Element elementText(String name):Element的方法,用來獲取第一個指定名字的子元素的文- 本內容。
- Element addElement(String name):Element的方法,爲當前元素添加指定名字子元素。返回值爲新建元素對象;
- setText(String text):Element的方法,爲當前元素設置文本內容。
- addAttribute(String name, String value):Element的方法,爲當前元素添加屬性。
- boolean remove(Element e):Element和Document的方法,移除指定子元素;
- Element getParent():獲取父元素,根元素的父元素爲null。
- DocumentHelper.createDocument():創建Document對象;
- DocumentHelper.createElement(String name):創建指定名稱的Element元素。
- int indexOf(Node node):Branch的方法,查找指定節點,在當前Branch的子節點集合中的下標位置。
3. DOM4J保存Document對象
保存Document對象需要使用XMLWriter對象的write()方法來完成,在創建XMLWriter時還可以爲其指定XML文檔的格式(縮進字符串以及是否換行),這需要使用OutputFormat來指定。
doc.addDocType("students", "", "students.dtd");
OutputFormat format = new OutputFormat("\t", true);
format.setEncoding("UTF-8");
//回寫xml
XMLWriter writer = new XMLWriter(new FileWriter(xmlName), format);
writer.write(doc);
writer.close();
4. 將兩個方法封裝成靜態方法:
//返回document
public static Document getDocument(String path) {
try {
//創建解析器
SAXReader reader = new SAXReader();
//得到document
Document document = reader.read(path);
return document;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//回寫xml的方法
public static void xmlWriters(String path,Document document) {
try {
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(path), format);
xmlWriter.write(document);
xmlWriter.close();
}catch(Exception e) {
e.printStackTrace();
}
}