Mega Code Archive

 
Categories / Java / XML
 

Creates element node, attribute node, comment node, processing instruction and a CDATA section

/***************************************************************  * (C) Copyright 2002 by Deitel & Associates, Inc. and         *  * Prentice Hall. All Rights Reserved.                         *  *                                                             *  * DISCLAIMER: The authors and publisher of this book have     *  * used their best efforts in preparing the book. These        *  * efforts include the development, research, and testing of   *  * the theories and programs to determine their effectiveness. *  * The authors and publisher make no warranty of any kind,     *  * expressed or implied, with regard to these programs or to   *  * the documentation contained in these books. The authors     *  * and publisher shall not be liable in any event for          *  * incidental or consequential damages in connection with, or  *  * arising out of, the furnishing, performance, or use of      *  * these programs.                                             *  ***************************************************************/         import java.io.FileOutputStream; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Result; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerFactoryConfigurationError; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Attr; import org.w3c.dom.CDATASection; import org.w3c.dom.Comment; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.ProcessingInstruction; public class BuildXml {   private Document document;   public BuildXml() {     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();     try {       DocumentBuilder builder = factory.newDocumentBuilder();       document = builder.newDocument();     }catch (ParserConfigurationException parserException) {       parserException.printStackTrace();     }     Element root = document.createElement("root");     document.appendChild(root);     // add comment to XML document     Comment simpleComment = document.createComment("This is a simple contact list");     root.appendChild(simpleComment);     // add child element     Node contactNode = createContactNode(document);     root.appendChild(contactNode);     // add processing instruction     ProcessingInstruction pi = document.createProcessingInstruction("myInstruction",         "action silent");     root.appendChild(pi);     // add CDATA section     CDATASection cdata = document.createCDATASection("I can add <, >, and ?");     root.appendChild(cdata);     // write the XML document to disk     try {       // create DOMSource for source XML document       Source xmlSource = new DOMSource(document);       // create StreamResult for transformation result       Result result = new StreamResult(new FileOutputStream("myDocument.xml"));       // create TransformerFactory       TransformerFactory transformerFactory = TransformerFactory.newInstance();       // create Transformer for transformation       Transformer transformer = transformerFactory.newTransformer();       transformer.setOutputProperty("indent", "yes");       // transform and deliver content to client       transformer.transform(xmlSource, result);     }     // handle exception creating TransformerFactory     catch (TransformerFactoryConfigurationError factoryError) {       System.err.println("Error creating " + "TransformerFactory");       factoryError.printStackTrace();     }catch (TransformerException transformerError) {       System.err.println("Error transforming document");       transformerError.printStackTrace();     }    catch (IOException ioException) {       ioException.printStackTrace();     }   }   public Node createContactNode(Document document) {     // create FirstName and LastName elements     Element firstName = document.createElement("FirstName");     Element lastName = document.createElement("LastName");     firstName.appendChild(document.createTextNode("First Name"));     lastName.appendChild(document.createTextNode("Last Name"));     // create contact element     Element contact = document.createElement("contact");     // create attribute     Attr genderAttribute = document.createAttribute("gender");     genderAttribute.setValue("F");     // append attribute to contact element     contact.setAttributeNode(genderAttribute);     contact.appendChild(firstName);     contact.appendChild(lastName);     return contact;   }   public static void main(String args[]) {     BuildXml buildXml = new BuildXml();   } }