Skip to content

Instantly share code, notes, and snippets.

@Manuri
Last active August 29, 2015 14:23
Show Gist options
  • Save Manuri/9e56867272f46351588a to your computer and use it in GitHub Desktop.
Save Manuri/9e56867272f46351588a to your computer and use it in GitHub Desktop.
package orderprocessing.service;
import java.io.File;
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 orderprocessing.data.Order;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
public class XMLWriterDOM {
private static XMLWriterDOM instance = null;
private final String retrievePath;
private XMLWriterDOM(){
retrievePath="/path/to/orders.xml";
}
public static XMLWriterDOM getInstance() {
if(instance == null){
instance= new XMLWriterDOM();
}
return instance;
}
public void saveOrder(Order order){
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder;
try {
dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(retrievePath);
Element rootElement = doc.getDocumentElement();
rootElement.appendChild(getOrder(order, doc));
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc);
StreamResult console = new StreamResult(System.out);
StreamResult file = new StreamResult(new File(retrievePath));
transformer.transform(source, console);
transformer.transform(source, file);
System.out.println("DONE");
} catch (Exception e) {
e.printStackTrace();
}
}
private Node getOrder(Order order,Document doc){
Element orderElement = doc.createElement("Order");
Element indexElement = doc.createElement("index");
indexElement.setTextContent(order.getIndex());
Element priceElement = doc.createElement("price");
priceElement.setTextContent(Double.toString(order.getPrice()));
orderElement.appendChild(indexElement);
orderElement.appendChild(priceElement);
return orderElement;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment