Dom_Creation.java
/*
* Copyright@ 2011 www.egtry.com
*/
package egtry.xml;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.StringWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
public class Dom_Creation {
public static void main(String[] args) throws Exception {
//step 1. create DocumentBuilder
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder domBuilder=factory.newDocumentBuilder();
//step 2. create the root Node
Document doc=domBuilder.newDocument();
Element root=doc.createElement("root");
doc.appendChild(root);
//step 3. Add an attribute
root.setAttribute("color", "red");
//step 4. Add a child
Element child=doc.createElement("p");
root.appendChild(child);
Text text=doc.createTextNode("This is plain text");
child.appendChild(text);
//step 4. output xml by Transformer
TransformerFactory transformerFactory=TransformerFactory.newInstance();
Transformer transformer=transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
StringWriter out=new StringWriter();
StreamResult result=new StreamResult(out);
transformer.transform(new DOMSource(doc), result);
System.out.println(out.toString());
}
public static void printNode(Node node) {
//node and its attributes
String name=node.getNodeName();
System.out.print("<"+name);
if (node.hasAttributes()) {
NamedNodeMap attributes=node.getAttributes();
for(int i=0; i<attributes.getLength(); i++) {
Node attribute=attributes.item(i);
System.out.print(" "+attribute.getNodeName()+"=\""+attribute.getNodeValue()+"\"");
}
}
System.out.println(">");
//get child nodes
NodeList childList=node.getChildNodes();
for(int i=0; i<childList.getLength(); i++ ) {
Node child=childList.item(i);
printNode(child);
}
System.out.println("</"+name+">");
}
}