/* 啊,兄弟们,前两个例子都是jaxp的,现在这个是xerces的,其实两个的差别并不大,只是其中一些地方
* 实现的不同,现在xerces也引入了documentbuilderfactory和documentbuilder,所以以后要创建一个
* document对象就可以使用一个统一的接口了,当然,你也可以使用别的方法来得到一个document实例,
* 下面我们会看到具体的例子
*
* 首先会创建一个新的document,然后在这个document基础上创建节点,最后用serializer输出
*
* author: belltree
*
*/
// 这个包就不用再讲了,定义了一系列的interface
import org.w3c.dom.*;
// 你可以不用下面这个包,这里import是为了使用documentbuilderfactory
import javax.xml.parsers.*;
// 下面这两个看看名字就明白,是实现(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();
////////////////////////////////////////////////////////////////////////////
// 下面也是一个创建document实例的方法,如果用这个,就可以不用javax.xml.parsers包
//document doc= new documentimpl();
// 下面可以看到,所有的element都由document实例创建,然后父节点用appendchild方法
// 将其加到自身节点上
element root = doc.createelement("person"); // 创建根节点
element item = doc.createelement("name"); // 创建一个名为name的element节点
item.appendchild(doc.createtextnode("jack")); // 创建一个文本节点并加到name节点上
root.appendchild(item); // 将该节点加到根节点上
item = doc.createelement("age"); // 创建一个名为age的element节点
item.appendchild(doc.createtextnode("28"));
root.appendchild(item); // 在根结点上又加一个
item = doc.createelement("height"); // 创建一个名为hieght的element节点
item.appendchild(doc.createtextnode("1.60"));
root.appendchild(item); // 再加一个,这个跟在age后面
doc.appendchild(root); // 好了,把根节点加到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();
}
}
}
