Created
March 17, 2024 20:17
-
-
Save trycf/5e82e888385faa10af67298f88d3cab4 to your computer and use it in GitHub Desktop.
TryCF Gist
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<cfscript> | |
unformattedXml = '<aaa><bbb ccc="ddd"><eee/></bbb></aaa>' | |
public string function prettyPrintByTransformer(required string xmlString, numeric indent=4, boolean ignoreDeclaration=true) { | |
var xmlAsStringReader = createObject("java", "java.io.StringReader").init(xmlString) | |
var src = createObject("java", "org.xml.sax.InputSource").init(xmlAsStringReader) | |
var document = createObject("java", "javax.xml.parsers.DocumentBuilderFactory").newInstance().newDocumentBuilder().parse(src) | |
var transformerFactory = createObject("java", "javax.xml.transform.TransformerFactory").newInstance() | |
var transformer = transformerFactory.newTransformer() | |
var outputKeys = createObject("java", "javax.xml.transform.OutputKeys") | |
transformer.setOutputProperty(outputKeys.ENCODING, "UTF-8") | |
transformer.setOutputProperty(outputKeys.OMIT_XML_DECLARATION, ignoreDeclaration ? "yes" : "no"); | |
transformer.setOutputProperty(outputKeys.INDENT, "yes") | |
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", indent) | |
var out = createObject("java", "java.io.StringWriter").init() | |
var documentAsDomSource = createObject("java", "javax.xml.transform.dom.DOMSource").init(document) | |
var outAsStreamResult = createObject("java", "javax.xml.transform.stream.StreamResult").init(out) | |
transformer.transform(documentAsDomSource, outAsStreamResult) | |
return out.toString() | |
} | |
formattedXml = prettyPrintByTransformer(unformattedXml) | |
writeOutput("<pre>#encodeForHtml(formattedXml)#</pre>") | |
formattedXml = prettyPrintByTransformer(unformattedXml, 8, false) | |
writeOutput("<pre>#encodeForHtml(formattedXml)#</pre>") | |
</cfscript> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment