package lab.xml; import java.io.PrintWriter; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.CharacterData; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.w3c.dom.Node; import org.w3c.dom.Text; import org.w3c.dom.ls.DOMImplementationLS; import org.w3c.dom.ls.LSSerializer; import org.xml.sax.InputSource; /** * construct an xml from data * * */ public class DomWrite { public static void main(String arg[]) throws Exception { PrintWriter out=new PrintWriter(System.out); test(out); out.flush(); } public static void test(PrintWriter out) throws Exception { // XMLDocument xdoc=new XMLDocument(); DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); DocumentBuilder builder=factory.newDocumentBuilder(); Document doc=builder.newDocument(); Element rootElement=doc.createElement("table"); rootElement.setAttribute("version", "1.1"); rootElement.setAttribute("userid", "123344"); doc.appendChild(rootElement); Element child1=doc.createElement("column"); rootElement.appendChild(child1); child1.setAttribute("name", "\"<column1>\""); Text textChild=doc.createTextNode("This is <b>inside</b>"); child1.appendChild(textChild); DOMImplementationLS domls=(DOMImplementationLS)doc.getImplementation(); LSSerializer serializer=domls.createLSSerializer(); String xml=serializer.writeToString(doc); out.println(xml); /* //Transformer depends on xalan, which is not supported by google app engine TransformerFactory tFactory=TransformerFactory.newInstance(); Transformer t=tFactory.newTransformer(); DOMSource dsource=new DOMSource(doc); StringWriter sOut=new StringWriter(); StreamResult outStream=new StreamResult(sOut); t.transform(dsource,outStream); out.println(sOut.toString()); */ /** <?xml version="1.0" encoding="UTF-16"?> <table userid="123344" version="1.1"> <column name=""<column1>"">This is <b>inside</b></column> </table> */ } }