package com.alethis.xml;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Source;
import javax.xml.transform.Result;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.*;
public class GenerateUsingDOM {
private final static String OUTPUT_FILE = "C:\\project\\xml\\out.xml";
public static final void main(String[] args) {
try {
Document doc = buildDocument();
Source source = new DOMSource(doc);
File f = new File(OUTPUT_FILE);
FileWriter fw = new FileWriter(f);
BufferedWriter bw = new BufferedWriter(fw);
StreamResult result = new StreamResult(bw);
TransformerFactory tfactory = TransformerFactory.newInstance();
Transformer transformer = tfactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(source, result);
System.out.println("DONE");
}
catch (FactoryConfigurationError fce) {
System.out.println("Factory configuration error: " + fce.getMessage());
}
catch (ParserConfigurationException pce) {
System.out.println("Parser configuration error: " + pce.getMessage());
}
catch (TransformerConfigurationException tce) {
System.out.println("Transformer configuration error: " + tce.getMessage());
}
catch (TransformerException te) {
System.out.println("Transformer error: " + te.getMessage());
}
catch (IOException ioe) {
System.out.println("IO error: " + ioe.getMessage());
}
}
private final static String FAMILY = "family";
private final static String FATHER = "father";
private final static String MOTHER = "mother";
private final static String CHILDREN = "children";
private final static String CHILD = "child";
private final static String AGE = "age";
private static Document buildDocument() throws FactoryConfigurationError, ParserConfigurationException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
DOMImplementation implementation = builder.getDOMImplementation();
Document doc = implementation.createDocument("", FAMILY, null);
Node root = doc.getDocumentElement();
Element father = doc.createElement(FATHER);
father.setAttribute(AGE, "49");
father.appendChild(doc.createTextNode("M. Boyle"));
root.appendChild(father);
Element mother = doc.createElement(MOTHER);
mother.setAttribute(AGE, "46");
mother.appendChild(doc.createTextNode("M. A. Maclure"));
root.appendChild(mother);
Element children = doc.createElement(CHILDREN);
root.appendChild(children);
Element chloe = doc.createElement(CHILD);
chloe.setAttribute(AGE, "12");
chloe.appendChild(doc.createTextNode("C. Boyle"));
children.appendChild(chloe);
Element adrian = doc.createElement(CHILD);
adrian.setAttribute(AGE, "10");
adrian.appendChild(doc.createTextNode("A. Boyle"));
children.appendChild(adrian);
return doc;
}
}