package com.WazaBe.HoloEverywhere.Builder; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.io.StringReader; import java.io.StringWriter; import java.io.UnsupportedEncodingException; 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 org.w3c.dom.Document; import org.xml.sax.InputSource; public class XMLFormatter { public static String format(InputSource is) { try { Document document = DocumentBuilderFactory.newInstance() .newDocumentBuilder().parse(is); TransformerFactory transformerFactory = TransformerFactory .newInstance(); transformerFactory.setAttribute("indent-number", 4); Transformer transformer = transformerFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); StreamResult result = new StreamResult(new StringWriter()); DOMSource source = new DOMSource(document); transformer.transform(source, result); return result.getWriter().toString(); } catch (Exception e) { throw new RuntimeException(e); } } public static String format(String xml) { return format(new StringReader(xml)); } public static String format(Reader reader) { return format(new InputSource(reader)); } public static String format(InputStream is, String charset) throws UnsupportedEncodingException { return format(new InputStreamReader(is, charset)); } public static String format(InputStream is) { return format(new InputStreamReader(is)); } }