/* 啊,兄弟们,前两个例子都是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(); } } }
|