How can I pretty-print XML source using VB6 and MSXML?
Asked Answered
G

1

23

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.

Gabrielson answered 13/7, 2009 at 9:54 Comment(1)
G
36

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
Gabrielson answered 13/7, 2009 at 9:55 Comment(6)
Very nice. I've been looking for something this simple - that didn't require additional libraries or recursion - for a very long time.Thoughtful
Superb - thank you very much for taking the time to develop and post this.Sorel
How would you use it if the information is taken through a sql server query?Sulph
What reference do you use to use SAXXMLReader60Sulph
I need to create an xml file using vb6 using an sql querySulph
The reference is Microsoft XML, v6.0 from msxml6.dllStymie

© 2022 - 2024 — McMap. All rights reserved.