[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: MSXML: New document built has only one line.
- From: Dan Rogers <danro@microsoft.com>
- To: "'christine.coisy@modicon.com'" <christine.coisy@modicon.com>,xml-dev@lists.xml.org
- Date: Fri, 02 Mar 2001 10:25:57 -0800
Hi Christine,
This might help you. It's code from some of our samples that pretty prints
the DOM content. If the document read in has formatting, it is preserved in
the DOM, but as you point out, unless you add in specific text nodes, you
don't get pretty print. Pass in to this function your DOMDocument and a
string containing a tab (which is the character to use for indent).
Best regards,
Dan Rogers
Microsoft Corporation
Public Sub PrettyFormatXMLDoc(ByRef objDom As IXMLDOMNode, ByVal strIndent
As String)
' In order traversal, visit the root then the children
'
Dim objChild As IXMLDOMNode
Dim objNew As IXMLDOMNode
Static indentOrigLen as integer
If indentOrigLen = 0 then indentOrigLen = len(strIndent)
If objDom.childNodes.length > 0 Then
For Each objChild In objDom.childNodes
PrettyFormatXMLDoc objChild, strIndent & left$(strIndent,
indentOrigLen)
If objDom.nodeType = NODE_ELEMENT Then
Set objNew = objDom.ownerDocument.createNode(NODE_TEXT,
vbNullString, vbNullString)
objNew.nodeValue = vbCrLf & strIndent
Set objNew = objDom.insertBefore(objNew, objChild)
Set objNew = Nothing
End If
Next
If objDom.nodeType = NODE_ELEMENT Then
Set objNew = objDom.ownerDocument.createNode(NODE_TEXT,
vbNullString, vbNullString)
objNew.nodeValue = vbCrLf & Left(strIndent, Len(strIndent) - 1)
Set objNew = objDom.appendChild(objNew)
Set objNew = Nothing
End If
End If
End Sub