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