|
/* 啊,兄弟們,前兩個(gè)例子都是jaxp的,現(xiàn)在這個(gè)是xerces的,其實(shí)兩個(gè)的差別并不大,只是其中一些地方 * 實(shí)現(xiàn)的不同,現(xiàn)在xerces也引入了DocumentBuilderFactory和DocumentBuilder,所以以后要?jiǎng)?chuàng)建一個(gè) * Document對(duì)象就可以使用一個(gè)統(tǒng)一的接口了,當(dāng)然,你也可以使用別的方法來(lái)得到一個(gè)Document實(shí)例, * 下面我們會(huì)看到具體的例子 * * 首先會(huì)創(chuàng)建一個(gè)新的Document,然后在這個(gè)Document基礎(chǔ)上創(chuàng)建節(jié)點(diǎn),最后用Serializer輸出 * * author: Belltree * */
// 這個(gè)包就不用再講了,定義了一系列的interface import org.w3c.dom.*;
// 你可以不用下面這個(gè)包,這里import是為了使用DocumentBuilderFactory import javax.xml.parsers.*;
// 下面這兩個(gè)看看名字就明白,是實(shí)現(xiàn)(Implementation)類(lèi) import org.apache.xerces.dom.DocumentImpl; import org.apache.xerces.dom.DOMImplementationImpl;
// 這是serialize包,用來(lái)做輸出 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來(lái)工作,這也是import javax.xml.parsers的原因 ///////////////////////////////////////////////////////////////////////////// DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; db = dbf.newDocumentBuilder(); Document doc = db.newDocument(); ////////////////////////////////////////////////////////////////////////////
// 下面也是一個(gè)創(chuàng)建Document實(shí)例的方法,如果用這個(gè),就可以不用javax.xml.parsers包 //Document doc= new DocumentImpl();
// 下面可以看到,所有的Element都由Document實(shí)例創(chuàng)建,然后父節(jié)點(diǎn)用appendChild方法 // 將其加到自身節(jié)點(diǎn)上 Element root = doc.createElement("person"); // 創(chuàng)建根節(jié)點(diǎn) Element item = doc.createElement("name"); // 創(chuàng)建一個(gè)名為name的Element節(jié)點(diǎn) item.appendChild(doc.createTextNode("jack")); // 創(chuàng)建一個(gè)文本節(jié)點(diǎn)并加到name節(jié)點(diǎn)上 root.appendChild(item); // 將該節(jié)點(diǎn)加到根節(jié)點(diǎn)上 item = doc.createElement("age");// 創(chuàng)建一個(gè)名為age的Element節(jié)點(diǎn) item.appendChild(doc.createTextNode("28")); root.appendChild(item); // 在根結(jié)點(diǎn)上又加一個(gè) item = doc.createElement("height"); // 創(chuàng)建一個(gè)名為hieght的Element節(jié)點(diǎn) item.appendChild(doc.createTextNode("1.60")); root.appendChild(item); // 再加一個(gè),這個(gè)跟在age后面 doc.appendChild(root);// 好了,把根節(jié)點(diǎn)加到Dcoument上
OutputFormat format = new OutputFormat(doc);// Serialize DOM
//StringWriter stringOut = new StringWriter();// 作為一個(gè)字符串輸出
OutputStream os = new FileOutputStream("out.xml");// 也可以輸出到文件
//XMLSerializer serial = new XMLSerializer(stringOut, format); // 這個(gè)就輸出為字符串
XMLSerializer serial = new XMLSerializer(os, format);// 這個(gè)輸出到文件
serial.asDOMSerializer(); // 作為一個(gè) DOM Serializer
serial.serialize(doc.getDocumentElement()); // 輸出
//System.out.println("STRXML = " + stringOut.toString()); // 看看輸出了些什么 } catch ( Exception ex ) { ex.printStackTrace(); } } }
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!