Re: [RESOLVED] 'Flatten' XML
VB Code:
Option Explicit
Private Sub Form_Load()
Dim xDoc As New MSXML2.DOMDocument
Dim nds As IXMLDOMNodeList
Dim nd As IXMLDOMNode
Dim cnt As Long
Dim sTmp As String
xDoc.Load "C:\test.xml"
Set nds = xDoc.selectNodes("//*")
For cnt = 0 To nds.length - 1
sTmp = GetPath(nds.Item(cnt))
Set nd = nds.Item(cnt).selectSingleNode("text()")
If Not (nd Is Nothing) Then sTmp = sTmp & "/" & nd.nodeValue
Debug.Print sTmp
Next
End Sub
Public Function GetPath(ByRef nd As IXMLDOMNode) As String
Dim sTmp As String
If Not (nd.parentNode Is Nothing) Then sTmp = GetPath(nd.parentNode) & "/" & nd.nodeName
GetPath = sTmp
End Function
Output:
/Order
/Order/OrderHeader
/Order/OrderHeader/OrderNumber
/Order/OrderHeader/OrderNumber/BuyerOrderNumber/ABC123
/Order/OrderHeader/OrderNumber/SellerOrderNumber/XYZ456
/Order/OrderHeader/OrderIssueDate/20061120T03:05:17-05:00
/Order/OrderHeader/OrderReferences
/Order/OrderHeader/OrderReferences/AccountCode
/Order/OrderHeader/OrderReferences/AccountCode/Reference
/Order/OrderHeader/OrderReferences/AccountCode/Reference/RefNum/RRRRR