1.首先要有dom4j.jar,然後在點項目,右鍵,Build Path --> Add External Archives,然後找到dom4j.jar的位置,把它引入。
2.示例XML文檔,之後操作以此文檔爲基礎
<?xml version="1.0" encoding="GBK"?>
<books>
<!--this is a test-->
<book show="yes">
<title>title is here</title>
</book>
<owner>i am owner</owner>
</books>
這是一個很簡單的XML文檔,場景是一個網上書店,每本書有兩個屬性,一個是書名[title],一個爲是否展示[show],另一項是這些書的擁有者[owner]信息。
3.建立一個xml文檔,把它放在相應的D盤目錄下。
具體如下:
import java.io.File;
import java.io.FileWriter;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class Create {
public int createXMLFile(String filename) {
// 創建一個xml文本
Document document = DocumentHelper.createDocument();
// 首先添加根節點
Element booksElement = document.addElement("books");
// 添加註釋
booksElement.addComment("this is a test");
// 添加根節點books的子節點---book節點
Element bookElement = booksElement.addElement("book");
// 設置book節點的屬性
bookElement.addAttribute("show", "yes");
// 再追加一個title節點
Element titleElement = bookElement.addElement("title");
titleElement.setText("title is here");
// 追加一個owner節點
Element ownerElement = booksElement.addElement("owner");
ownerElement.setText("i am owner");
try {
// 輸出該xml文件
XMLWriter writer = new XMLWriter(new FileWriter(new File(
"d://abc.xml")));
writer.write(document);
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
public int formatXMLFile(String filename) {
int returnValue = 0;
try {
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(filename));
XMLWriter writer = null;
// 格式化輸出
OutputFormat format = OutputFormat.createPrettyPrint();
// 指定XML編碼
format.setEncoding("GBK");
writer = new XMLWriter(new FileWriter(filename), format);
writer.write(document);
writer.close();
// 執行成功,需返回1
returnValue = 1;
} catch (Exception ex) {
ex.printStackTrace();
}
return returnValue;
}
public static void main(String[] args) {
new Create().createXMLFile(null);
new Create().formatXMLFile("d://abc.xml");
}
}
然後在d盤會生成一個abc.xml,內容和上面的文檔一樣。
4. 解析xml
import java.io.File;
import java.util.Iterator;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Read {
public void read(String filename) throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(new File(filename));
// 獲得根節點
Element rootElm = document.getRootElement();
// 獲得該節點名字
String name = rootElm.getName();
System.out.println(name);
// 遍歷所有子節點
Iterator iter = rootElm.elementIterator();
// 如果子節點存在
while (iter.hasNext()) {
// 取出子節點對象
Element bb = (Element) iter.next();
// 打印其屬性
System.out.println(bb.attributeValue("show"));
}
// 獲得子節點book對象
Element bookElement = rootElm.element("book");
// 獲得book節點下的title對象
Element titleElement = bookElement.element("title");
System.out.println(titleElement.getText());
// 獲得該節點屬性
Attribute attribute = bookElement.attribute("show");
String attName = attribute.getText();
// 遍歷它的所有屬性
Iterator it = bookElement.attributeIterator();
while (it.hasNext()) {
// 取出其所有屬性
Attribute attri = (Attribute) it.next();
String text = attribute.getText();
System.out.println(text);
}
}
public static void main(String[] args) throws DocumentException {
new DomRead().read("d:/a.xml");
}
}
這主要是讀取xml裏的一些信息。
過程注意導入的那些類,其中有些和別的很相像,不小心就會弄錯,導致寫的過程中會報錯。