本文實例講述了java使用dom4j生成與解析xml文檔的方法。分享給大家供大家參考,具體如下:
xml是一種新的數據格式,主要用于數據交換。我們所用的框架都有涉及到xml。因此解析或生成xml對程序員也是一個技術難點。這里就用dom4j來生成一個文檔,需要注意的是每個xml文檔只有一個根節點。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
package org.lxh; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.UnsupportedEncodingException; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; public class CreateXml { public static void main(String[] args) { File f= new File( "d:" +File.separator+ "my.xml" ); Document docu=DocumentHelper.createDocument(); //創建xml文檔 Element linkman=docu.addElement( "linkman" ); //創建根節點 Element name=linkman.addElement( "name" ); //創建子元素 Element age=linkman.addElement( "age" ); name.setText( "陳瑞銀" ); //設置name節點的內容 age.setText( "22" ); //設置age節點的內容 OutputFormat format=OutputFormat.createPrettyPrint(); //指定輸出格式 format.setEncoding( "UTF-8" ); //指定輸出編碼 try { XMLWriter w= new XMLWriter( new FileOutputStream(f),format); //輸出文件 w.write(docu); //輸出內容 w.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } |
現在看一下文檔生成沒有,如圖所示
文檔生成了,這個文檔比較簡單。生成復雜的文檔也是一樣的道理。下面來解析一下這個xml。
代碼如下所示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
package org.lxh; import java.io.File; import java.util.Iterator; import org.dom4j.*; import org.dom4j.io.SAXReader; public class ReadXml { public static void main(String[] args) { File f= new File( "d:" +File.separator+ "my.xml" ); SAXReader read= new SAXReader(); //建立SAX解析讀取 Document document= null ; try { document=read.read(f); //讀取文檔 Element root=document.getRootElement(); //取得根元素 //下面給注釋的部分用于解析復雜的xml(3層或以上) /*Iterator it=root.elementIterator(); //取得全部子節點 while(it.hasNext()) { /*Element e=(Element)it.next(); System.out.println(e.elementText("name")); //取得文本元素 System.out.println(e.elementText("age")); }*/ System.out.println(root.elementText( "age" )); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } |
下面是運行效果截圖
希望本文所述對大家java程序設計有所幫助。