Nu måste jag kopiera <CloneNode> och lägga till lika många som jag har rader i ett recordset. Detta för att sedan stoppain värdena i recordsetet i noderna.
Jag tänkte göra det så här:
Dim XMLDOM As New MSXML2.DOMDocument30
's innehåller xml:en ovan
XMLDOM.loadXML s
Dim obj As Object
Dim node As MSXML2.DOMDocument30
Set obj = CreateObject("IABNR.XMLiPack")
'rsAppend är mitt recordset med tre rader.
Set node = obj.CloneAndBindNodes(XMLDOM.getElementsByTagName("TestNodes"), rsAppend)
Här kommer funktionen som jag sänder in det i:
Public Function CloneAndBindNodes(ByVal prm2 As MSXML2.IXMLDOMNodeList, rsParams As Adodb.Recordset) As MSXML2.IXMLDOMNode
On Error GoTo errorHandler
Dim prm As MSXML2.IXMLDOMNode
Set prm = prm2.Item(0)
'clone the node that shall we will have multiple of
Dim clone As MSXML2.IXMLDOMNode
Set clone = prm.childNodes.Item(0).cloneNode(True)
'how many copies of the clone do we need?
Dim numberOfClones As Long
numberOfClones = rsParams.RecordCount
'add the clones
Dim i As Long
For i = 1 To numberOfClones -1
prm.appendChild clone
Next
Dim nde As MSXML2.IXMLDOMNode
Dim att As MSXML2.IXMLDOMNode
For Each nde In prm.childNodes
For Each att In nde
att.Attributes.getNamedItem("Value").nodeValue = rsParams(att.nodeName)
Next
rsParams.MoveNext
Next
CtxSetComplete
Exit Function
errorHandler:
HandleError g_modName, "CloneAndBindNodes"
End Function
Det som inte funkar är att när jag gör "prm.appendChild clone" så lägger den bara till en (1) clone. Jag ser hur den går igenom for loopen 2 gånger men det lägger bara till en enda.