<cfxml variable="companydoc">
<company>
<employees>
<person>
<firstname>Sam</firstname>
<surname>Slate</surname>
</person>
</employees>
</company>
</cfxml>

<cfxml variable="candidatesdoc">
<candidates>
<person>
<firstname>Fred</firstname>
<surname>Flintstone</surname>
</person>
<person>
<firstname>Barney</firstname>
<surname>Rubble</surname>
</person>
</candidates>
</cfxml>


<cffunction name="copyNode" access="public" output="false" returntype="void" 
hint="Copies a node from one document into a second document">
    <cfargument name="xmlDoc">
    <cfargument name="newNode">
    <cfargument name="oldNode">
    <cfset var key = "">
    <cfset var index = "">
    <cfset var i = "">
    <cfif len(trim(oldNode.xmlComment))>
        <cfset newNode.xmlComment = trim(oldNode.xmlComment)>
    </cfif>
    <cfif len(trim(oldNode.xmlCData))>
        <cfset newNode.xmlCData = trim(oldNode.xmlCData)>
    </cfif>
    <cfset newNode.xmlAttributes = oldNode.xmlAttributes>
    <cfset newNode.xmlText = trim(oldNode.xmlText)>
   
    <cfloop from="1" to="#arrayLen(oldNode.xmlChildren)#" index="i">
        <cfset newNode.xmlChildren[i] = 
xmlElemNew(xmlDoc,oldNode.xmlChildren[i].xmlName)>
        <cfset copyNode(xmlDoc,newNode.xmlChildren[i],oldNode.xmlChildren[i])>
    </cfloop>
</cffunction>

<cfset newNode = xmlElemNew(companydoc,'person')>
<cfset oldNode = candidatesdoc.candidates.xmlChildren[1]>
<cfset copyNode(companydoc,newNode,oldNode)>
<cfset companyDoc.company.employees.xmlChildren[2] = newNode>


<cfdump var="#companydoc#">

Gives me everything but barney.


<!--- This step returns a java object rather than a ColdFusion XML Node --->
<cfset newNode = candidatesdoc.candidates.person.cloneNode(true)>
<!--- Change the owner of the node --->
<cfset companyDoc.changeNodeOwner(newNode)>
<!--- Append it to its new parent --->
<cfset companydoc.company.employees.appendChild(newNode)>

<cfdump var="#companydoc#">

Gives me everything but Barney.

Your last sample works like a dream....

-----Original Message-----
From: Stephen Milligan [mailto:[EMAIL PROTECTED]
Sent: Thursday, 24 June 2004 8:50 AM
To: CFAussie Mailing List
Subject: [cfaussie] RE: xml element append or something


What output do you get from the code below?

I get 2 dumped xml documents. The first one has 3 person elements under the
employees node and the second one has 2 person elements under the root node.

The original company doc has only 1 person, so to me that looks like it's
appending both barney and fred as employees to the company doc and not
removing or replacing anything.

Or did I misunderstand what you're asking?

Spike

START CODE
***************************************

<cfxml variable="companydoc">

<company>

<employees>

<person>

<firstname>Sam</firstname>

<surname>Slate</surname>

</person>

</employees>

</company>

</cfxml>

<cfxml variable="candidatesdoc">

<candidates>

<person>

<firstname>Fred</firstname>

<surname>Flintstone</surname>

<![CDATA[ test ]]>

</person>

<person>

<firstname>Barney</firstname>

<surname>Rubble</surname>

</person>

</candidates>

</cfxml>





<!--- This step returns a java object rather than a ColdFusion XML Node --->

<cfloop from="1" to="#arrayLen(candidatesdoc.candidates.person)#" index="i">

<cfset newNode = candidatesdoc.candidates.person[i].cloneNode(true)>

<!--- Change the owner of the node --->

<cfset companyDoc.changeNodeOwner(newNode)>

<!--- Append it to its new parent --->

<cfset companydoc.company.employees.appendChild(newNode)>

</cfloop>

<cfdump var="#companyDoc#">

<cfdump var="#candidatesDoc#">

***************************************************
END CODE



--------------------------------------------
Stephen Milligan
Code poet for hire
http://www.spike.org.uk <http://www.spike.org.uk/>

Do you cfeclipse? http://cfeclipse.tigris.org <http://cfeclipse.tigris.org/>






________________________________

        From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Taco Fleur
        Sent: Wednesday, June 23, 2004 2:33 PM
        To: CFAussie Mailing List
        Subject: [cfaussie] RE: xml element append or something


        Am I just not getting it or??
        
        Its doing a replace and not an append as far as I can tell, Barney
sure has gone about.

                -----Original Message-----
                From: Stephen Milligan [mailto:[EMAIL PROTECTED]
                Sent: Thursday, 24 June 2004 8:28 AM
                To: CFAussie Mailing List
                Subject: [cfaussie] RE: xml element append or something
        
        
                Yeah, that code is copying only the first person node.
                
                If you want to copy all of them you can wrap a loop around
the outside of it and treat the person node as an array:
                
                <!--- This step returns a java object rather than a
ColdFusion XML Node --->

                <cfloop from="1"
to="#arrayLen(candidatesdoc.candidates.person)#" index="i">

                <cfset newNode =
candidatesdoc.candidates.person[i].cloneNode(true)>

                <!--- Change the owner of the node --->

                <cfset companyDoc.changeNodeOwner(newNode)>

                <!--- Append it to its new parent --->

                <cfset companydoc.company.employees.appendChild(newNode)>

                </cfloop>

                
                Spike
                
                --------------------------------------------
                Stephen Milligan
                Code poet for hire
                http://www.spike.org.uk <http://www.spike.org.uk/>

                Do you cfeclipse? http://cfeclipse.tigris.org
<http://cfeclipse.tigris.org/> 
        

                


________________________________

                        From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Taco Fleur
                        Sent: Wednesday, June 23, 2004 2:12 PM
                        To: CFAussie Mailing List
                        Subject: [cfaussie] RE: xml element append or
something
                
                
                        I was going to say "ai ai you dirty little rascal,
when you get back I'll buy you a beer" until I saw you made Barney
disappear!!
                        
                        It did a replace instead of an append.
                        
                        Might have to add a new empty person element first??

                                -----Original Message-----
                                From: Stephen Milligan
[mailto:[EMAIL PROTECTED]
                                Sent: Thursday, 24 June 2004 1:35 AM
                                To: CFAussie Mailing List
                                Subject: [cfaussie] RE: xml element append
or something
                        
                        
                                Go have a look at my blog
http://www.spike.org.uk/blog/index.cfm
                                
                                I posted an entry about this a week or so
ago.
                                
                                Spike
                                
                                --------------------------------------------
                                Stephen Milligan
                                Code poet for hire
                                http://www.spike.org.uk
<http://www.spike.org.uk/>

                                Do you cfeclipse?
http://cfeclipse.tigris.org <http://cfeclipse.tigris.org/> 
                        

                                


________________________________

                                        From:
[EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Taco Fleur
                                        Sent: Tuesday, June 22, 2004 8:02 PM
                                        To: CFAussie Mailing List
                                        Subject: [cfaussie] xml element
append or something
                                
                                

                                        Can't seem to figure the following
out.

                                        <cfxml variable="test1">
                                        <logsummary
xmlns="http://tempuri.org/logsummary.xsd";>
                                            <error uuid="">
                                                <diagnostic occured=""
firstoccurance="" lastoccurance="" fixedon=""></diagnostic>
                                                <comment></comment>
                                                <fix>

<location></location>
                                                </fix>
                                            </error>
                                        </logsummary>
                                        </cfxml>

                                        <cfxml variable="test2">
                                        <logsummary
xmlns="http://tempuri.org/logsummary.xsd";>
                                            <error uuid="">
                                                <diagnostic occured=""
firstoccurance="" lastoccurance="" fixedon=""></diagnostic>
                                                <comment></comment>
                                                <fix>

<location></location>
                                                </fix>
                                            </error>
                                        </logsummary>
                                        </cfxml>

                                        **************
                                        I want to do something like
                                        structInsert(test2.logsummary,
"error", test1.logsummary.error);

                                        Or
                                        structAppend(test2.logsummary,
test1.logsummary.error);

                                        So I would end up with

                                        <logsummary
xmlns="http://tempuri.org/logsummary.xsd";>
                                            <error uuid="">
                                                <diagnostic occured=""
firstoccurance="" lastoccurance="" fixedon=""></diagnostic>
                                                <comment></comment>
                                                <fix>

<location></location>
                                                </fix>
                                            </error>
                                            <error uuid="">
                                                <diagnostic occured=""
firstoccurance="" lastoccurance="" fixedon=""></diagnostic>
                                                <comment></comment>
                                                <fix>

<location></location>
                                                </fix>
                                            </error>
                                        </logsummary>

                                        is this possible?

                                        ---
                                        You are currently subscribed to
cfaussie as: [EMAIL PROTECTED]
                                        To unsubscribe send a blank email to
[EMAIL PROTECTED] Aussie Macromedia Developers:
http://lists.daemon.com.au/

Register now for the 3rd National Conference on Tourism Futures, being held
in Townsville, North Queensland 4-7 August - www.tq.com.au/tfconf
                                
                                        

                                ---
                                You are currently subscribed to cfaussie as:
[EMAIL PROTECTED]
                                To unsubscribe send a blank email to
[EMAIL PROTECTED] Aussie Macromedia Developers:
http://lists.daemon.com.au/

                        ---
                        You are currently subscribed to cfaussie as:
[EMAIL PROTECTED]
                        To unsubscribe send a blank email to
[EMAIL PROTECTED] Aussie Macromedia Developers:
http://lists.daemon.com.au/
                                                Register now for the 3rd
National Conference on Tourism Futures, being held in Townsville, North
Queensland 4-7 August - www.tq.com.au/tfconf
                
                        

                ---
                You are currently subscribed to cfaussie as:
[EMAIL PROTECTED]
                To unsubscribe send a blank email to
[EMAIL PROTECTED] Aussie Macromedia Developers:
http://lists.daemon.com.au/

        ---
        You are currently subscribed to cfaussie as: [EMAIL PROTECTED]
        To unsubscribe send a blank email to
[EMAIL PROTECTED] Aussie Macromedia Developers:
http://lists.daemon.com.au/
                Register now for the 3rd National Conference on Tourism
Futures, being held in Townsville, North Queensland 4-7 August -
www.tq.com.au/tfconf

        



---
You are currently subscribed to cfaussie as: [EMAIL PROTECTED]
To unsubscribe send a blank email to [EMAIL PROTECTED]
Aussie Macromedia Developers: http://lists.daemon.com.au/

Register now for the 3rd National Conference on Tourism Futures, being held in 
Townsville, North Queensland 4-7 August - www.tq.com.au/tfconf

---
You are currently subscribed to cfaussie as: [EMAIL PROTECTED]
To unsubscribe send a blank email to [EMAIL PROTECTED]
Aussie Macromedia Developers: http://lists.daemon.com.au/

Reply via email to