I need your help on this. I was asked to CRUD a mach-ii.xml with a form. Since it is not a normal xml file, it is difficult to manage it. Please offer your advice how this should be tackled. Thanks, Bill Attach Code <!DOCTYPE mach-ii SYSTEM "http://www.macromedia.com/xml/dtds/mach-ii_1_0.dtd"> <mach-ii version="1.0"> <listeners> <listener name="listerner1" type="cfc.component"> <parameters> <parameter name="name1" value="value1" /> <parameter name="name2" value="value2" /> <parameter name="name3" value="value3" /> <parameter name="name4" value="value4" /> <parameter name="name5" value="value5" /> </parameters> </listener> <listener name="listerner2" type="cfc.component"> <parameters> <parameter name="name1" value="value1" /> <parameter name="name2" value="value2" /> <parameter name="name3" value="value3" /> <parameter name="name4" value="value4" /> <parameter name="name5" value="value5" /> </parameters> </listener> <listener name="listerner3" type="cfc.component"> <parameters> <parameter name="name1" value="value1" /> <parameter name="name2" value="value2" /> <parameter name="name3" value="value3" /> <parameter name="name4" value="value4" /> <parameter name="name5" value="value5" /> </parameters> </listener> </listeners> ...... </mach-ii>
Now I can take the data out of the file. Question is how could I put it in a structure so I edit and update it. Please advice. <cfoutput> <cfloop from="1" to="#arrayLen(xml.machii.listeners.listener)#" index="i"> #i#= #xml.machii.listeners.listener.XmlAttributes.name# <cfset paramLen= arrayLen(xml.machii.listeners.listener.parameters.parameter)> <cfdump var="#paramLen#" label="parameter"> <ul> <cfloop from="1" to="#paramLen#" index="j"> <em>#j#</em> Name: #xml.machii.listeners.listener.parameters.parameter[j].XmlAttributes.name# Value: #xml.machii.listeners.listener.parameters.parameter[j].XmlAttributes.value#<br/> </cfloop> </ul> </cfloop> <hr /> EventHandler <cfloop from="1" to="#arrayLen(xml.machii.eventhandlers.eventhandler)#" index="a"> <em>#a#:</em> event: #xml.machii.eventhandlers.eventhandler[a].XmlAttributes.event#<br /> <cfif isdefined("#xml.machii.eventhandlers.eventhandler.notify.XmlAttributes.listener#")> listener: #xml.machii.eventhandlers.eventhandler[a].notify.XmlAttributes.listener# <br /> </cfif> viewPage: =#xml.machii.eventhandlers.eventhandler[a].viewpage.XmlAttributes.name#<br /><br /> </cfloop> <hr /> <ul>pageviews <cfloop from="1" to="#arrayLen(xml.machii.pageviews.pageview)#" index="m"> <li><em>#m# #xml.machii.pageviews.pageview[m].XmlAttributes.name# </em> =#xml.machii.pageviews.pageview[m].XmlAttributes.page#</li> </cfloop> </ul> </cfoutput>
I am trying to add a new element to an xml file, I has 5 existing, so I am trying to add the sixth. but got an error message, anyone could help me on this? Thanks, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The index of a child element is out of range. There are only "5" children under this node. Therefore index "6" is out of the allowed range [1-5]. The error occurred in C:\CFusionMX7\wwwroot\myfolder\addNew.cfm: line 18 16 : newNodePos = arrayLen(variables.xml.machii.listeners.listener) + 1; 17 : // add new node then set it's attributes 18 : variables.xml.machii.listeners.listener[variables.newNodePos]= XMLElemNew(variables.xml,"listener"); 19 : structInsert(variables.xml.machii.listeners.listener[variables.newNodePos].XmlAttributes,"name","#form.listenerName#",1); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ here the code: <cfscript> // get array position of next XML child to add newNodePos = arrayLen(variables.xml.machii.listeners.listener) + 1; // add new node then set it's attributes variables.xml.machii.listeners.listener[variables.newNodePos]= XMLElemNew(variables.xml,"listener"); structInsert(variables.xml.machii.listeners.listener[variables.newNodePos].XmlAttributes,"name","#form.listenerName#",1); </cfscript>