Dom4j解析XML

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裏的一些信息。


過程注意導入的那些類,其中有些和別的很相像,不小心就會弄錯,導致寫的過程中會報錯。

發佈了25 篇原創文章 · 獲贊 6 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章