package edu.harvard.iq.dataverse.util.xml; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.logging.Logger; import javax.xml.transform.OutputKeys; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.sax.SAXSource; import javax.xml.transform.sax.SAXTransformerFactory; import javax.xml.transform.stream.StreamResult; import org.xml.sax.InputSource; public class XmlPrinter { private static final Logger logger = Logger.getLogger(XmlPrinter.class.getCanonicalName()); static public String prettyPrintXml(String xml) { try { Transformer transformer = SAXTransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); Source source = new SAXSource(new InputSource(new ByteArrayInputStream(xml.getBytes()))); StreamResult streamResult = new StreamResult(new ByteArrayOutputStream()); transformer.transform(source, streamResult); return new String(((ByteArrayOutputStream) streamResult.getOutputStream()).toByteArray()); } catch (IllegalArgumentException | TransformerException ex) { logger.info("Returning XML as-is due to problem pretty printing it: " + ex.toString()); return xml; } } }