一、生成xml文件
1. 下載dom4j-1.6.1.jar和jaxen-1.1-beta-10.jar,下載地址分別如下:
http://www.dom4j.org/
http://jaxen.codehaus.org/releases.html
注:本文附帶的源碼中有以上兩個JAR文件。
2. 寫一個批處理文件dom4j.bat,內容如下:
set CLASSPATH=c:\test\jar\jaxen-1.1-beta-10.jar;c:\test\jar\dom4j-1.6.1.jar;%CLASSPATH%
3. 編寫代碼(編譯前運行一下dom4j.bat),成功運行后會在cmd內顯示生成的xml文件的內容,而且在C盤下會生成“output.xml”文件。大部分代碼摘自官方網(wǎng)站的quick start,我做了些修正,因為官方的不能直接運行。代碼如下:
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import java.io.IOException;
import java.io.FileWriter;
public class CreateXML {
// 輸出XML數(shù)據(jù)
public void write(Document document) throws IOException {
// xml 標準格式,保存到文件
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(new FileWriter( "c:\\output.xml" ), format );
writer.write( document );
writer.close();
// 緊湊的格式,System.out顯示(
format = OutputFormat.createCompactFormat();
writer = new XMLWriter( System.out, format );
System.out.println("\r\n------------------Start------------------");
writer.write( document );
System.out.println("\r\n-------------------End-------------------");
writer.close();
}
// 返回XML對象
public Document createDocument() {
Document document = DocumentHelper.createDocument();
Element root = document.addElement( "root" );
Element author1 = root.addElement( "author" )
.addAttribute( "name", "James" )
.addAttribute( "location", "UK" )
.addText( "James Strachan" );
Element author2 = root.addElement( "author" )
.addAttribute( "name", "Bob" )
.addAttribute( "location", "US" )
.addText( "Bob McWhirter" );
return document;
}
public static void main(String[] args) {
CreateXML dom4j = new CreateXML();
try {
dom4j.write(dom4j.createDocument());
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
4. 運行過程和結果:
C:\test>dom4j.bat
C:\test>set CLASSPATH=c:\test\jar\jaxen-1.1-beta-10.jar;c:\test\jar\dom4j-1.6.1.
jar;.;c:\jdk1.5\lib
C:\test>javac CreateXML.java
C:\test>java CreateXML
------------------Start------------------
<?xml version="1.0" encoding="UTF-8"?>
<root><author name="James" location="UK">JamesStrachan</author><author name="Bob" location="US">BobMcWhirter</author></root>
-------------------End-------------------
C:\test>
二、獲取XML文件中的數(shù)據(jù)
代碼如下:
import java.net.URL;
import java.io.IOException;
import java.io.FileWriter;
import java.io.File;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
public class Parse_1 {
public Document parse(String sfile) throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(new File(sfile));
return document;
}
public void write(Document document) throws IOException {
// xml的格式,System.out顯示(
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter( System.out, format );
System.out.println("\r\n------------------Start------------------");
writer.write( document );
System.out.println("\r\n-------------------End-------------------");
}
public static void main(String[] args) {
Parse_1 dom4j = new Parse_1();
try {
dom4j.write(dom4j.parse("c:\\output.xml"));
} catch (IOException e) {
System.out.println(e.getMessage());
} catch (DocumentException e) {
System.out.println(e.getMessage());
}
}
}
運行過程和結果:
C:\test>dom4j
C:\test>set CLASSPATH=c:\test\jar\jaxen-1.1-beta-10.jar;c:\test\jar\dom4j-1.6.1.
jar;.;c:\jdk1.5\lib
C:\test>javac Parse_1.java
C:\test>java Parse_1
------------------Start------------------
<?xml version="1.0" encoding="UTF-8"?>
<root>
<author name="James" location="UK">James Strachan</author>
<author name="Bob" location="US">Bob McWhirter</author>
</root>
-------------------End-------------------
C:\test>
三、獲取、修改XML元素
代碼如下:
import java.io.IOException;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.dom4j.io.SAXReader;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Node;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.Attribute;
public class Parse_2 {
public Document parse(String sfile) throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(new File(sfile));
return document;
}
public void bar(Document document) throws IOException {
List list = document.selectNodes( "http://author" );
Iterator iter=list.iterator();
System.out.println("\r\n****** 獲取的數(shù)據(jù)如下 ******");
while(iter.hasNext()){
Element titleElement=(Element)iter.next();
// 修改xml元素
if(titleElement.getText().equals("James Strachan")) {
titleElement.setText("Faint Heipark");
}
System.out.print(titleElement.valueOf( "@name" ) + ":");
System.out.println(titleElement.getText());
}
// 輸出全部原始數(shù)據(jù)
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter( System.out, format );
System.out.println("\r\n------------------Start------------------");
writer.write( document );
System.out.println("\r\n-------------------End-------------------");
}
public static void main(String[] args) {
Parse_2 dom4j = new Parse_2();
try {
dom4j.bar(dom4j.parse("c:\\output.xml"));
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
運行結果:
C:\test>java Parse_2
****** 獲取的數(shù)據(jù)如下 ******
James:Faint Heipark
Bob:Bob McWhirter
------------------Start------------------
<?xml version="1.0" encoding="UTF-8"?>
<root>
<author name="James" location="UK">Faint Heipark</author>
<author name="Bob" location="US">Bob McWhirter</author>
</root>
-------------------End-------------------
轉貼網(wǎng)址:http://hi.baidu.com/lennyxue/blog/item/1fc3a82560cac46135a80f5f.html