Dom4j創建和解析XML

jopen 10年前發布 | 39K 次閱讀 Dom4j XML操作類庫

需要導入Dom4j的一個Jar文件:

Dom4j創建XML

import java.io.FileOutputStream;
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.XMLWriter;

public class Test1
{
 public static void main(String[] args) throws Exception
 {
  // 創建文檔并設置文檔的根元素節點 :第一種方式
  // Document document = DocumentHelper.createDocument();
  //
  // Element root = DocumentHelper.createElement("student");
  //
  // document.setRootElement(root);

  // 創建文檔并設置文檔的根元素節點 :第二種方式
  Element root = DocumentHelper.createElement("student");
  Document document = DocumentHelper.createDocument(root);
        //給根元素添加屬性
  root.addAttribute("name", "zhangsan");
        //給根元素添加子元素
  Element helloElement = root.addElement("hello");
  Element worldElement = root.addElement("world");
        //設置元素的文本內容
  helloElement.setText("hello");
  worldElement.setText("world");
        //給hello元素添加屬性
  helloElement.addAttribute("age", "20");
        //將XML文檔輸出到命令行
  XMLWriter xmlWriter = new XMLWriter();
  xmlWriter.write(document);
  //指定輸出格式,第一個參數表示縮進,第二個參數表示是否換行
  OutputFormat format = new OutputFormat("    ", true);
  //以字節流的方式輸出到文件
  XMLWriter xmlWriter2 = new XMLWriter(new FileOutputStream("student2.xml"), format);
  xmlWriter2.write(document);
  //以字符流的方式輸出到文件
  XMLWriter xmlWriter3 = new XMLWriter(new FileWriter("student3.xml"), format);
  xmlWriter3.write(document);
  //xmlWriter3.flush();//當你使用字符流輸出的時候,需要有這個刷新的方法,否則沒有結果輸出
  xmlWriter3.close();//close方法中包含xmlWriter3的flush方法,所以這個方法也可以

 }
}

 

Dom4j解析XML

 import java.io.File;
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.Element;
import org.dom4j.io.DOMReader;
import org.dom4j.io.SAXReader;

public class Test2
{
 public static void main(String[] args) throws Exception
 {
  //Dom4j解析XMl方式一:使用SAXReader解析XML
  SAXReader saxReader = new SAXReader();
  //讀取文檔
  Document doc = saxReader.read(new File("student2.xml"));
  //得到根元素
  Element root = doc.getRootElement();

  System.out.println("root element: " + root.getName());
  //得到根元素下的所有子元素
  List childList = root.elements();

  System.out.println(childList.size());
  //得到根元素下的所有名字為hello子元素
  List childList2 = root.elements("hello");

  System.out.println(childList2.size());
  //得到根元素下的第一個名字為hello的子元素
  Element first = root.element("hello");
  //得到hello元素下的屬性為age的值
  System.out.println(first.attributeValue("age"));
  //遍歷根元素下的子元素的第二種方法,第一種是使用List
  for(Iterator iter = root.elementIterator(); iter.hasNext();)
  {
   Element e = (Element)iter.next();
   //獲得子元素屬性為age的值,沒有age屬性,輸出null
   System.out.println(e.attributeValue("age"));
  }

  System.out.println("---------------------------");

  //Dom4j解析XMl方式二:使用DOMReader解析XML
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  DocumentBuilder db = dbf.newDocumentBuilder();
  //在一個項目中使用了名字相同的一個類,使用包名區分
  org.w3c.dom.Document document = db.parse(new File("student2.xml"));

  DOMReader domReader = new DOMReader();

  //將JAXP的Document轉換為dom4j的Document
  Document d = domReader.read(document);

  Element rootElement = d.getRootElement();

  System.out.println(rootElement.getName());
   }
}

 

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!