webForumDet fria alternativet

appendChild

XML

3 svar · 530 visningar · startad av mrblonde

Medlem sedan aug. 20012 349 inlägg
Frågan#1

Har ett nytt problem.
Jag har ett xml meddelande som ser ut så här:

<MESSAGE>
	<PARAMS>
		<TestNodes>
			<CloneNode>	
				<Attribute1 Value="a1"/>
				<Attribute2 Value="a2"/>
			</CloneNode>
		</TestNodes>
	</PARAMS>
</MESSAGE>

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.

Dvs om jag skriver ut xmlen blir det:

<MESSAGE>
	<PARAMS>
		<TestNodes>
			<CloneNode>	
				<Attribute1 Value="a1"/>
				<Attribute2 Value="a2"/>
			</CloneNode>
			<CloneNode>	
				<Attribute1 Value="a1"/>
				<Attribute2 Value="a2"/>
			</CloneNode>
		</TestNodes>
	</PARAMS>
</MESSAGE>

Varför?

------------------
National Blonde Day!
Alle ihre Basis ist uns gehört.

Medlem sedan aug. 20012 349 inlägg
#2

för den intresserade kan jag meddelan att jag löst det.

den accepterade inte att jag försökte lägga till samma clone flera ånger, men om jag flyttade ner

Set clone = prm.childNodes.Item(0).cloneNode(True)

Så att den kom in i for next loopen gick det bra.
dvs:

For i = 1 To numberOfClones -1
  Set clone = prm.childNodes.Item(0).cloneNode(True)
  prm.appendChild clone
Next

Hepp!

------------------
National Blonde Day!
Alle ihre Basis ist uns gehört.

Medlem sedan nov. 20011 inlägg
#3

Jag undrar hur jag kan skicka med ett   via XSL till min HTML sida?

Anledningen är för att jag vill ha med ett mellanrum i mina <TD> taggar så Netscape visar min tagg med rätt bakgrundsfärg.

Jag vill alltså INTE ha någon HEX / ASCII kod för blanksteg... utan veta hur jag kan skicka med ren HTML via XSL.

Tack,
a

------------------
---
the end is the end is the end

Medlem sedan juni 200032 967 inlägg
#4

Hej och välkommen hit! :)

Jag brukar göra så här: lite omständigt, men...

<xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>

Du borde också kunna lösa det med CDATA.

Mvh,

------------------
All your base are belong to me.

269 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)