明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

Java+XML學習Step by step(3)

[摘要]/* 啊,兄弟們,前兩個例子都是jaxp的,現(xiàn)在這個是xerces的,其實兩個的差別并不大,只是其中一些地方* 實現(xiàn)的不同,現(xiàn)在xerces也引入了DocumentBuilderFactory和DocumentBuilder,所以以后要創(chuàng)建一個* Document對象就可以使用一個統(tǒng)一的接口了,當...
/* 啊,兄弟們,前兩個例子都是jaxp的,現(xiàn)在這個是xerces的,其實兩個的差別并不大,只是其中一些地方
* 實現(xiàn)的不同,現(xiàn)在xerces也引入了DocumentBuilderFactory和DocumentBuilder,所以以后要創(chuàng)建一個
* Document對象就可以使用一個統(tǒng)一的接口了,當然,你也可以使用別的方法來得到一個Document實例,
* 下面我們會看到具體的例子
*
* 首先會創(chuàng)建一個新的Document,然后在這個Document基礎上創(chuàng)建節(jié)點,最后用Serializer輸出
*
* author: Belltree
*
*/

// 這個包就不用再講了,定義了一系列的interface
import org.w3c.dom.*;

// 你可以不用下面這個包,這里import是為了使用DocumentBuilderFactory
import javax.xml.parsers.*;

// 下面這兩個看看名字就明白,是實現(xiàn)(Implementation)類
import org.apache.xerces.dom.DocumentImpl;
import org.apache.xerces.dom.DOMImplementationImpl;

// 這是serialize包,用來做輸出
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.Serializer;
import org.apache.xml.serialize.SerializerFactory;
import org.apache.xml.serialize.XMLSerializer;

// java.io包,輸入輸出的
import java.io.*;

/**
* @author Jeffrey Rodriguez
* @version $id$
*/
public class DOMGenerate {
public static void main( String[] argv ) {
try {
/////////////////////////////////////////////////////////////////////////////
// 這里使用DocumentBuilderFactory來工作,這也是import javax.xml.parsers的原因
/////////////////////////////////////////////////////////////////////////////
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
db = dbf.newDocumentBuilder();
Document doc = db.newDocument();
////////////////////////////////////////////////////////////////////////////

// 下面也是一個創(chuàng)建Document實例的方法,如果用這個,就可以不用javax.xml.parsers包
//Document doc= new DocumentImpl();

// 下面可以看到,所有的Element都由Document實例創(chuàng)建,然后父節(jié)點用appendChild方法
// 將其加到自身節(jié)點上
Element root = doc.createElement("person"); // 創(chuàng)建根節(jié)點
Element item = doc.createElement("name"); // 創(chuàng)建一個名為name的Element節(jié)點
item.appendChild(doc.createTextNode("jack")); // 創(chuàng)建一個文本節(jié)點并加到name節(jié)點上
root.appendChild(item); // 將該節(jié)點加到根節(jié)點上
item = doc.createElement("age");// 創(chuàng)建一個名為age的Element節(jié)點
item.appendChild(doc.createTextNode("28")); 
root.appendChild(item); // 在根結點上又加一個
item = doc.createElement("height"); // 創(chuàng)建一個名為hieght的Element節(jié)點
item.appendChild(doc.createTextNode("1.60"));
root.appendChild(item); // 再加一個,這個跟在age后面
doc.appendChild(root);// 好了,把根節(jié)點加到Dcoument上


OutputFormat format = new OutputFormat(doc);// Serialize DOM

//StringWriter stringOut = new StringWriter();// 作為一個字符串輸出

OutputStream os = new FileOutputStream("out.xml");// 也可以輸出到文件

//XMLSerializer serial = new XMLSerializer(stringOut, format); // 這個就輸出為字符串

XMLSerializer serial = new XMLSerializer(os, format);// 這個輸出到文件

serial.asDOMSerializer(); // 作為一個 DOM Serializer

serial.serialize(doc.getDocumentElement()); // 輸出

//System.out.println("STRXML = " + stringOut.toString()); // 看看輸出了些什么
} catch ( Exception ex ) {
ex.printStackTrace();
}
}
}