使用dom4j建立和解析xml

以前工做中用到了,相信寫java的都會碰到xml,這裏寫了兩個方法,建立和解析xml,廢話很少說,直接上代碼java


package xml;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.Iterator;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.DOMReader;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class TestXml {

	public static void main(String[] args) {
		createXml("E:/test/human.xml");
		
		try {
			readXml("E:/test/human.xml");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 建立Xml文件
	 * 
	 * @param fileName
	 * @return
	 */
	public static void createXml(String fileName) {
//		 // 第一種方式:建立文檔,並建立根元素
//		 // 建立文檔:使用了一個Helper類
//		 Document document = DocumentHelper.createDocument();
//		 // 建立根節點並添加進文檔
//		 Element root = DocumentHelper.createElement("human");
//		 document.setRootElement(root);

		// 第二種方式:建立文檔並設置文檔的根元素節點
		Element root = DocumentHelper.createElement("human");
		Document document = DocumentHelper.createDocument(root);

		Element name = root.addElement("name");// 添加節點name
		name.setText("張三");// 賦值
		name.addAttribute("a1", "123");// 添加屬性a1,並賦值
		Element sex = root.addElement("sex");
		sex.setText("男");

		try {// 寫入文件
				// 格式
			OutputFormat format = new OutputFormat("    ", true);// 設置縮進爲4個空格,而且另起一行爲true
			Writer fileWriter = new FileWriter(fileName);
			XMLWriter xmlWriter = new XMLWriter(fileWriter, format);
			xmlWriter.write(document); // 寫入文件中
			xmlWriter.close();
		} catch (IOException e) {
			System.out.println(e.getMessage());
		}

	}

	/**
	 * 解析Xml
	 * 
	 * @param fileName
	 */
	public static void readXml(String fileName) throws Exception {
		SAXReader saxReader = new SAXReader();
		Document document = saxReader.read(new File("E:/test/human.xml"));
		// 獲取根元素
		Element root = document.getRootElement();
		System.out.println("Root: " + root.getName());
		// 獲取全部子元素
		List<Element> childList = root.elements();
		System.out.println("total child count: " + childList.size());
		// 獲取特定名稱的子元素
		List<Element> childList2 = root.elements("name");
		System.out.println("name child: " + childList2.size());

		// 獲取名字爲指定名稱的第一個子元素
		Element firstWorldElement = root.element("name");
		// 輸出其屬性
		System.out.println("first World Attr: "
				+ firstWorldElement.attribute(0).getName() + "="
				+ firstWorldElement.attributeValue("a1"));

		System.out.println("迭代輸出-----------------------");
		// 迭代輸出
		for (Iterator iter = root.elementIterator(); iter.hasNext();) {
			Element e = (Element) iter.next();
			System.out.println(e.getText());

		}

		System.out.println("用DOMReader-----------------------");
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		DocumentBuilder db = dbf.newDocumentBuilder();
		// 注意要用完整類名
		org.w3c.dom.Document document2 = db.parse(new File("E:/test/human.xml "));

		DOMReader domReader = new DOMReader();

		// 將JAXP的Document轉換爲dom4j的Document
		Document document3 = domReader.read(document2);

		Element rootElement = document3.getRootElement();

		System.out.println("Root: " + rootElement.getName());
	}

}
相關文章
相關標籤/搜索