[
https://issues.apache.org/jira/browse/CONFIGURATION-568?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13902487#comment-13902487
]
Adrian Crum commented on CONFIGURATION-568:
-------------------------------------------
This is how we do it in Apache OFBiz:
{code}
/** Creates a JAXP TrAX Transformer suitable for pretty-printing an
* XML document. This method is provided as an alternative to the
* deprecated <code>org.apache.xml.serialize.OutputFormat</code> class.
* @param encoding Optional encoding, defaults to UTF-8
* @param omitXmlDeclaration If <code>true</code> the xml declaration
* will be omitted from the output
* @param indent If <code>true</code>, the output will be indented
* @param indentAmount If <code>indent</code> is <code>true</code>,
* the number of spaces to indent. Default is 4.
* @return A <code>Transformer</code> instance
* @see <a
href="http://java.sun.com/javase/6/docs/api/javax/xml/transform/package-summary.html">JAXP
TrAX</a>
* @throws TransformerConfigurationException
*/
public static Transformer createOutputTransformer(String encoding, boolean
omitXmlDeclaration, boolean indent, int indentAmount) throws
TransformerConfigurationException {
// Developers: This stylesheet strips all formatting space characters
from the XML,
// then indents the XML using the specified indentation.
StringBuilder sb = new StringBuilder();
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
sb.append("<xsl:stylesheet
xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"
xmlns:xalan=\"http://xml.apache.org/xslt\" version=\"1.0\">\n");
sb.append("<xsl:output method=\"xml\" encoding=\"");
sb.append(encoding == null ? "UTF-8" : encoding);
sb.append("\"");
if (omitXmlDeclaration) {
sb.append(" omit-xml-declaration=\"yes\"");
}
sb.append(" indent=\"");
sb.append(indent ? "yes" : "no");
sb.append("\"");
if (indent) {
sb.append(" xalan:indent-amount=\"");
sb.append(indentAmount <= 0 ? 4 : indentAmount);
sb.append("\"");
}
sb.append("/>\n<xsl:strip-space elements=\"*\"/>\n");
sb.append("<xsl:template match=\"@*|node()\">\n");
sb.append("<xsl:copy><xsl:apply-templates
select=\"@*|node()\"/></xsl:copy>\n");
sb.append("</xsl:template>\n</xsl:stylesheet>\n");
ByteArrayInputStream bis = new
ByteArrayInputStream(sb.toString().getBytes());
TransformerFactory transformerFactory =
TransformerFactory.newInstance();
return transformerFactory.newTransformer(new StreamSource(bis));
}
{code}
> Pretty print indent config XML when saving
> ------------------------------------------
>
> Key: CONFIGURATION-568
> URL: https://issues.apache.org/jira/browse/CONFIGURATION-568
> Project: Commons Configuration
> Issue Type: Wish
> Components: Format
> Affects Versions: 1.9
> Reporter: Rodney Beede
> Priority: Trivial
> Original Estimate: 24h
> Remaining Estimate: 24h
>
> When using the XML configuration and saving it'd be nice if the XML had nice
> indentation of nested nodes.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)