package com.levelup.java.xml;
import static org.junit.Assert.assertEquals;
import java.io.StringWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Text;
/**
* This java example will creating xml with DOM parser.
*
* @author Justin Musgrove
* @see <a href=
* 'http://www.leveluplunch.com/java/examples/create-xml-node-with-dom-parser/'>Create
* xml/node with dom parser</a>
*
*/
public class CreateXMLWithDomParser {
String formattedXML = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
+ "<movie id=\"tt0111161\">\n"
+ "<rating>9.3</rating>\n"
+ "<title>The Shawshank Redemption</title>\n"
+ "<genre>Crime|Drama</genre>\n" + "</movie>\n" + "";
@Test
public void create_xml() throws TransformerException,
ParserConfigurationException {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document movieDocument = db.newDocument();
org.w3c.dom.Element movieElement = movieDocument.createElement("movie");
movieElement.setAttribute("id", "tt0111161");
movieDocument.appendChild(movieElement);
org.w3c.dom.Element ratingElement = movieDocument
.createElement("rating");
Text text1 = movieDocument.createTextNode("9.3");
ratingElement.appendChild(text1);
movieElement.appendChild(ratingElement);
org.w3c.dom.Element titleElement = movieDocument.createElement("title");
Text text2 = movieDocument.createTextNode("The Shawshank Redemption");
titleElement.appendChild(text2);
movieElement.appendChild(titleElement);
org.w3c.dom.Element genreElement = movieDocument.createElement("genre");
Text text3 = movieDocument.createTextNode("Crime|Drama");
genreElement.appendChild(text3);
movieElement.appendChild(genreElement);
// Output the XML
TransformerFactory transformerFactory = TransformerFactory
.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(movieDocument);
StringWriter xmlWrittenToString = new StringWriter();
StreamResult streamResult = new StreamResult(xmlWrittenToString);
// transform xml source to result
transformer.transform(source, streamResult);
assertEquals(formattedXML, xmlWrittenToString.toString());
}
}