I've been looking after this for months now and I mostly found sites asking the same question.
The answers I did found were always for .NET or C++ or involved XSLT.
I've been looking after this for months now and I mostly found sites asking the same question.
The answers I did found were always for .NET or C++ or involved XSLT.
After months of research I've come up with this.
Public Function PrettyPrintXML(XML As String) As String
  Dim Reader As New SAXXMLReader60
  Dim Writer As New MXXMLWriter60
  Writer.indent = True
  Writer.standalone = False
  Writer.omitXMLDeclaration = False
  Writer.encoding = "utf-8"
  Set Reader.contentHandler = Writer
  Set Reader.dtdHandler = Writer
  Set Reader.errorHandler = Writer
  Call Reader.putProperty("http://xml.org/sax/properties/declaration-handler", _
          Writer)
  Call Reader.putProperty("http://xml.org/sax/properties/lexical-handler", _
          Writer)
  Call Reader.parse(XML)
  PrettyPrintXML = Writer.output
End Function
Using a document:
Public Function PrettyPrintDocument(Doc As DOMDocument60) As String
  PrettyPrintDocument = PrettyPrintXML(Doc.XML)
End Function