AnythingToXML

PDF HTML FlashPaper

Complex Example

This 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>

Back To AnythingToXML Examples