--- /dev/null
+package com.quantum.util.xml;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Writer;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.FactoryConfigurationError;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.xml.serialize.DOMSerializer;
+import org.apache.xml.serialize.OutputFormat;
+import org.apache.xml.serialize.XMLSerializer;
+import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
+
+
+/**
+ * <p>This class constructs a pretty-printing XML Serializer
+ *
+ * @author BC
+ */
+public class XMLHelper {
+
+ private XMLHelper() {}
+
+ public static DOMSerializer createDOMSerializer(Writer writer)
+ throws IOException {
+ XMLSerializer serializer = new XMLSerializer(writer, createOutputFormat());
+ return serializer.asDOMSerializer();
+ }
+
+ public static DOMSerializer createDOMSerializer(OutputStream stream)
+ throws IOException {
+ XMLSerializer serializer = new XMLSerializer(stream, createOutputFormat());
+ return serializer.asDOMSerializer();
+ }
+ private static OutputFormat createOutputFormat() {
+ OutputFormat format = new OutputFormat();
+ format.setIndenting(true);
+ format.setLineWidth(80);
+ return format;
+ }
+
+ public static Document createEmptyDocument() throws ParserConfigurationException {
+ DocumentBuilder builder = createDocumentBuilder();
+ return builder.newDocument();
+ }
+
+ public static Document createFromInputStream(InputStream stream)
+ throws IOException, SAXException, ParserConfigurationException {
+ DocumentBuilder builder = createDocumentBuilder();
+ return builder.parse(stream);
+ }
+
+ private static DocumentBuilder createDocumentBuilder()
+ throws FactoryConfigurationError, ParserConfigurationException {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ return factory.newDocumentBuilder();
+ }
+
+ public static void write(Writer writer, Document document)
+ throws IOException {
+ createDOMSerializer(writer).serialize(document);
+ }
+
+ public static void write(OutputStream stream, Document document)
+ throws IOException {
+ createDOMSerializer(stream).serialize(document);
+ }
+}