2009-07-13 3 views
20

Я занимаюсь этим уже несколько месяцев, и в основном я нашел сайты, задающие один и тот же вопрос.Как я могу печатать XML-источник, используя VB6 и MSXML?

Ответы 0 найдены были всегда для .NET или C++ или участвовали в XSLT.

+0

Вы также можете посмотреть здесь: http://stackoverflow.com/q/10202576/18771 – Tomalak

ответ

30

После нескольких месяцев исследований я придумал это.

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 

Использование документа:

Public Function PrettyPrintDocument(Doc As DOMDocument60) As String 
    PrettyPrintDocument = PrettyPrintXML(Doc.XML) 
End Function 
+6

Очень приятно. Я искал что-то такое простое - что не требовало дополнительных библиотек или рекурсии - в течение очень долгого времени. – jveazey

+1

Превосходно - большое спасибо за то, что нашли время, чтобы разработать и опубликовать это. – w5m