Wordpress Themes - Wordpress Theme - Bob's Free Stuff Forum - Debt Consolidation - HDTV

PDA

View Full Version : Update xml with form


sw1267
Dec 15th 2006, 9:15 am
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>

sw1267
Dec 16th 2006, 8:12 pm
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[i].XmlAttributes.name#
<cfset paramLen= arrayLen(xml.machii.listeners.listener[i].parameters.parameter)>
<cfdump var="#paramLen#" label="parameter">
<ul>
<cfloop from="1" to="#paramLen#" index="j">
<em>#j#</em>
Name: #xml.machii.listeners.listener[i].parameters.parameter[j].XmlAttributes.name#
Value: #xml.machii.listeners.listener[i].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>

sw1267
Dec 18th 2006, 5:54 pm
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>