How to Indent XML String in Java (Pretty)
We often need to format a text block in xml to better visualize its content, after all we are human, aren’t we? In this post, we demonstrate a block of source code in java that does this job for us … I particularly use it a lot to inspect the request and response of a WebService in Soap … erghhh Soap. I know … But sometimes it is necessary … Have fun
This is a cool way to prettify your XML (String format) in Java Language:
import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import java.io.Writer; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.apache.xml.serialize.OutputFormat; import org.apache.xml.serialize.XMLSerializer; import org.w3c.dom.Document; import org.xml.sax.InputSource; import org.xml.sax.SAXException; public class FormatXML { public static void main(String[] args) throws IOException, SAXException, ParserConfigurationException { System.out.println(format("YOUR_XML_HERE", true)); } public static String format(String xml, Boolean ommitXmlDeclaration) throws IOException, SAXException, ParserConfigurationException { DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document doc = db.parse(new InputSource(new StringReader(xml))); OutputFormat format = new OutputFormat(doc); format.setIndenting(true); format.setIndent(2); format.setOmitXMLDeclaration(ommitXmlDeclaration); format.setLineWidth(Integer.MAX_VALUE); Writer outxml = new StringWriter(); XMLSerializer serializer = new XMLSerializer(outxml, format); serializer.serialize(doc); return outxml.toString(); } }