Complex ExampleThis example creates an array containing two structures each of which hold a customer object and a query. Then it converts it all to well formatted XML. The code looks a little jumbled here. You may want to paste it into your editor and auto-format it there. (This example uses Customer.cfc which is defined in the Object Example) Code: <cfprocessingdirective suppresswhitespace="yes" >
<cfsetting enablecfoutputonly="yes">
<!--- Complex to XML example. --->
<!--- This is where the fun begins --->
<!--- create 1st query --->
<cfset idList = arraynew(1) />
<cfset productList = arraynew(1) />
<cfset priceList = arraynew(1) />
<cfset arrayappend(idList,"1") />
<cfset arrayappend(idList,"2") />
<cfset arrayappend(productList,"GI Joe") />
<cfset arrayappend(productList,"Transformer")/>
<cfset arrayappend(priceList,"$10.00")/>
<cfset arrayappend(priceList,"$16.00") />
<cfset thisQueryOne = queryNew() />
<cfset queryaddcolumn(thisQueryOne,'id',idList) />
<cfset queryaddcolumn(thisQueryOne,'name',productList) />
<cfset queryaddcolumn(thisQueryOne,'price',priceList) />
<!---<cfdump var="#thisQueryOne#" > <cfabort>--->
<!--- create 2nd query --->
<cfset idList = arraynew(1) />
<cfset productList = arraynew(1) />
<cfset priceList = arraynew(1) />
<cfset arrayappend(idList,"3") />
<cfset arrayappend(productList,"My Little Pony") />
<cfset arrayappend(priceList,"$12.00") />
<cfset thisQueryTwo = queryNew() />
<cfset queryaddcolumn(thisQueryTwo,'id',idList) />
<cfset queryaddcolumn(thisQueryTwo,'name',productList) />
<cfset queryaddcolumn(thisQueryTwo,'price',priceList) />
<!---<cfdump var="#thisQueryTwo#" > <cfabort>--->
<!---
Now create an array containing two structures which each hold a customer object and a query
--->
<cfset TheseOrders = arrayNew(1) />
<cfset TheseOrders[1] = structnew() />
<cfset TheseOrders[1].OrderNumber = createUUID() />
<cfset TheseOrders[1].Customer = createObject('component', 'customer').init("Bob","Jones") />
<cfset TheseOrders[1].Product = thisQueryOne />
<cfset TheseOrders[2] = structnew() />
<cfset TheseOrders[2].OrderNumber = createUUID() />
<cfset TheseOrders[2].Customer = createObject('component', 'customer').init("Jill","Jones") />
<cfset TheseOrders[2].Product = thisQueryTwo />
<!--- create a list of attributes (optional)--->
<cfset AttributeList = "OrderNumber,customerid,id" />
<cfset AnythingToXML = createObject('component', 'AnythingToXML.AnythingToXML').init() />
<cfset myXML = AnythingToXML.toXML(TheseOrders,"ORDER",AttributeList) />
<cfoutput>#myXML#</cfoutput>
</cfprocessingdirective>
Output: <ORDERS>
<ORDER OrderNumber="02E5C40E-1422-2598-1F8425D746E37762">
<CUSTOMER customerid="02E5C41E-1422-2598-1FF3C0AB61CF9B81">
<Lastname>Jones</Lastname>
<Firstname>Bob</Firstname>
</CUSTOMER>
<PRODUCTS>
<PRODUCT id="1">
<PRICE>$10.00</PRICE>
<NAME>GI Joe</NAME>
</PRODUCT>
<PRODUCT id="2">
<PRICE>$16.00</PRICE>
<NAME>Transformer</NAME>
</PRODUCT>
</PRODUCTS>
</ORDER>
<ORDER OrderNumber="02E5C43D-1422-2598-1F5A54CB3DD0F411">
<CUSTOMER customerid="02E5C45C-1422-2598-1F6C2A74F3C176BE">
<Lastname>Jones</Lastname>
<Firstname>Jill</Firstname>
</CUSTOMER>
<PRODUCTS>
<PRODUCT id="3">
<PRICE>$12.00</PRICE>
<NAME>My Little Pony</NAME>
</PRODUCT>
</PRODUCTS>
</ORDER>
</ORDERS>
|