/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.eas.xml.dom; import java.io.StringWriter; import java.util.logging.Level; import java.util.logging.Logger; 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.w3c.dom.Document; /** * * @author mg */ public class XmlDom2String { protected static ThreadLocal<TransformerFactory> factories = new ThreadLocal<>(); private XmlDom2String() { super(); } public static String transform(Document aDocument) { return transform(aDocument, true); } public static String transform(Document aDocument, boolean aIndent) { try { if (aDocument != null) { TransformerFactory tfactory = factories.get(); if (tfactory == null) { tfactory = TransformerFactory.newInstance(); factories.set(tfactory); } Transformer transformer = tfactory.newTransformer(); if (aIndent) { transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); } else { transformer.setOutputProperty(OutputKeys.INDENT, "no"); } StringWriter sw = new StringWriter(); StreamResult res = new StreamResult(sw); transformer.transform(new DOMSource(aDocument), res); return sw.toString(); } } catch (IllegalArgumentException | TransformerException ex) { Logger.getLogger(XmlDom2String.class.getName()).log(Level.SEVERE, null, ex); } return ""; } }