使用Java處理XML數(shù)據(jù)
使用Java處理XML文檔數(shù)據(jù),不僅可以做到對XML數(shù)據(jù)的解析,同時也可以實現(xiàn)XML文檔的生成,以及在已經(jīng)存在的XML文檔中進(jìn)行添加元素、刪除元素、修改元素等一系列的操作。在這一節(jié)中,將向讀者介紹使用JDOM來實現(xiàn)對XML數(shù)據(jù)的處理。
JDOM是一個開源項目,它基于樹型結(jié)構(gòu),利用純Java技術(shù)對XML文檔實現(xiàn)解析、生成、序列化等操作。JDOM直接為Java編程服務(wù)。它利用Java語言的諸多特性(方法重載、集合概念以及映射),把SAX和DOM的功能有效地結(jié)合起來。因此,只需要有一個JDOM的jar包,就可以在Java程序中,使用JDOM來實現(xiàn)對XML數(shù)據(jù)的處理。
使用JDOM來生成XML文檔
下面介紹使用Eclipse來加載JDOM的jar包,同時利用JDOM來創(chuàng)建并生成一個XML文檔。步驟如下。
(1)在Eclipse中建立工程項目。單擊 “File”|“New”|“Project”命令菜單。
(2)在彈出窗口中選擇“Java Project”,并單擊“Next >”按鈕。
(3)在彈出的“New Java Project”窗口中,在“Project name”文本框內(nèi)輸入工程名,例如輸入“JDOMDemo”,之后單擊“Finish”按鈕。
(5)下載完畢后,將其解壓縮,解壓縮后的“jdom.jar”文件即JDOM的jar包。
(6)在已經(jīng)建立好的Eclipse工程項目中,導(dǎo)入jdom.jar包。鼠標(biāo)移至工程名“JDOMDemo”上,單擊鼠標(biāo)右鍵,在彈出菜單中單擊“Properties”菜單項。
(7)在出現(xiàn)的“Properties for JDOMDemo”窗口中,選擇“Java Build Path”選項,再在右邊選擇“Libraries”標(biāo)簽,并在其窗口中單擊“Add External JARs…”按鈕(添加Eclipse外部jar包。
(8)在出現(xiàn)的JAR Selection窗口中,選擇之前下載好的“jdom.jar”文件,并單擊“打開”按鈕,如圖22-13所示。
(9)完成以上的幾步后,會在“Libraries”標(biāo)簽窗口中發(fā)現(xiàn)多出了jdom一項,就說明導(dǎo)入成功了,并點擊“OK”按鈕,如圖22-14所示。
(10)在工程項目中添加生成XML文檔的類CreateXML。
(11)在代碼編輯窗口中編寫代碼,用于生成XML文檔。
代碼22-7 使用JDOM生成XML文檔CreateXML.java
import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;
public class CreateXML
{
//聲明XML中所有的元素
Element customer,name,age,sex,address,street,city,district;
public CreateXML()
{
//創(chuàng)建customer元素,并設(shè)置為XML文檔的根節(jié)點
customer = new Element("customer");
Document myDocument = new Document(customer);
//創(chuàng)建XML文檔中的其他元素,并初始化元素名
name = new Element("name");
age = new Element("age");
sex = new Element("sex");
address = new Element("address");
street = new Element("street");
city = new Element("city");
district = new Element("district");
//給XML文檔中的每一個元素添加內(nèi)容值
name.addContent("Wang Xiao Yue");
age.addContent("24");
sex.addContent("male");
street.addContent("No.1 East Rood,ShangDi");
district.addContent("Hai Dian");
city.addContent("Bei Jing");
//將street、district和city元素作為子元素,添加到address元素中
address.addContent(street);
address.addContent(district);
address.addContent(city);
//將address元素作為子元素,添加到customer根元素中
customer.addContent(name);
customer.addContent(age);
customer.addContent(sex);
customer.addContent(address);
try
{
//創(chuàng)建XML文件輸出流
XMLOutputter fmt = new XMLOutputter();
//創(chuàng)建文件輸出流
FileWriter writer = new FileWriter("c:\\customer.xml");
//設(shè)置所創(chuàng)建的XML文檔的格式
Format f = Format.getPrettyFormat();
fmt.setFormat(f);
//將生成的XML文檔寫入到"c:\customer.xml"文件中
fmt.output(myDocument, writer);
writer.close();
}
catch (Exception e) {e.printStackTrace();}
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
CreateXML createXML = new CreateXML();
}
}
程序運行后,會在“C:\”目錄下生成 “customer.xml”文件。