Ok, I was wondering if I could get some help on something I'm trying to accomplish. I'm trying to build a function that takes an array of xmlelements, whether its from an xmlsearch() - xpath expression, or the -.xmlchildren and builds an xmldoc object, or an xmlelement object to be used somewhere else.
@ - xmlarray (required) array of xml elements @ - xnmlrootobj, either a predefined xmlroot obj or a string @ - xmlelemname - either to use as a element to be returned, or as the root of the xmldoc function xx(xmlarray,xmlrootobj,xmlelemname){ var flag = 0; var i = 1; var tester = ""; //assume if it's not an xmlobj it was sent in as a string so we'll build one. if(not IsXmlDoc(xmlrootobj)) { flag = 1; xmlrootobj = xmlnew(); xmlrootobj.xmlelemname = xmlelemnew(xmlrootobj,xmlelemname); } else { xmlelemname = xmlelemnew(xmlrootobj,xmlelemname); } for(i=1;i lte arraylen(xmlarray);i=i+1) { // ~ if xmlname is on the left side of the assignment, cfmx thinks I'm using it to set a property even though I'm just referencing its value, // ~ so I'm giving it a temp value to carry it through the loop. tester = xmlarray[i].xmlname; // ~ create a new element tester = xmlelemnew(xmlrootobj,tester); // ~ I'm fully aware that the XmlNsPrefix has to conform to spec, but it seems needless that // ~ I have to check if it has a value when the rest of the cfmx xml doc types // ~ can just be duplicated even if the value is an empty string. eg. tester.XmlNsPrefix = xmlarray[i].XmlNsPrefix; or tester.XmlNsPrefix = duplicate(xmlarray[i].XmlNsPrefix); // ~ both error out if it's an emptry string. if(len(xmlarray[i].XmlNsPrefix)) { tester.XmlNsPrefix = xmlarray[i].XmlNsPrefix; } tester.xmltext = duplicate(xmlarray[i].xmltext); tester.XmlNsURI = duplicate(xmlarray[i].XmlNsURI); tester.XmlComment = duplicate(xmlarray[i].XmlComment); tester.xmlattributes = duplicate(xmlarray[i].xmlattributes); // now here is my delimma, . the xmlchildren array of the xmlelement is essentially the same thing as the array I'm passing in. // so I want to check if the array itself has any value and if so pass it back to this function to parse through that array. // which I know isn't the best thing, but with no true other way to move children of one doc to another, it's pretty much the only way I have. if( arraylen(xmlarray[i].xmlchildren)) { xx(xmlarray[i].xmlchildren,xmlrootobj,tester) } // The problem I have comes here.. I can't figure out how to append the children to it's parent on the fly. // in another words I can't figure out how to put the xmlchildren back into this function and have it appended to the parent of that function which would allow me to build the xml doc/element with all children duplicated over. arrayappend(xmlelemname.xmlchildren,tester); }//end loop if(flag) { return xmlrootobj; } else { return xmlelemname; } } any ideas, ? or something similar out there? Robby _________________________________________________________________ Tired of spam? Get advanced junk mail protection with MSN 8. http://join.msn.com/?page=features/junkmail ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Archives: http://www.houseoffusion.com/cf_lists/index.cfm?forumid=4 Subscription: http://www.houseoffusion.com/cf_lists/index.cfm?method=subscribe&forumid=4 FAQ: http://www.thenetprofits.co.uk/coldfusion/faq This list and all House of Fusion resources hosted by CFHosting.com. The place for dependable ColdFusion Hosting. http://www.cfhosting.com Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4