Skip to main content
Known Participant
December 23, 2008
Question

XML help wanted

  • December 23, 2008
  • 5 replies
  • 843 views
wrote a code to generate the an .xml file. It doesnot work. Can any one find any mistake in the code.

code:
===============================

<cfquery datasource="Arunatest1" name="update">
select * from emp where deptno=10
</cfquery>

<cfxml variable="POXML">
<cfoutput>
<Productrequested Name="Test" PODATE="#Dateformat(now(),"mm/dd/yyyy")#" Supplier="UMUC web apps" SupplierName="Aruna"></cfoutput>
<Itemdetails>
<cfoutput query="Update">
<TaID> #emplid# </TaID>
<StuID> #deptno# </StuID>
<SSAN> #Name# </SSAN>
<Stu_Last> #City# </Stu_Last>
</cfoutput>
</Itemdetails>
<Productrequested>
</cfxml>

<cfoutput>
<cfset XMLTextForFile=ToString(POXML)>
<cfset varFile="..\student.xml">
<cffile action="write" file="#varFile#" output="#XMLTextForFile#">
</cfoutput>


This topic has been closed for replies.

5 replies

Inspiring
December 24, 2008
<cfoutput query="Update">
<Itemdetails>
<TaID> <cfoutput> #xmlformat(emplid)# </cfoutput></TaID>
<StuID> <cfoutput> #xmlformat(deptno)# </cfoutput></StuID>
<SSAN> <cfoutput> #xmlformat(Name)# </cfoutput></SSAN>
<Stu_Last> <cfoutput> #xmlformat(City)# </cfoutput></Stu_Last>
</Itemdetails>
</cfoutput>

Your nested <cfoutputs...> are causing nested looping. This used to
throw an error, but I guess now it causes loops.

Get rid of all the extra <cfoutput> tags. You just need the outer set.

<cfoutput query="Update">
<Itemdetails>
<TaID>#xmlformat(emplid)#</TaID>
<StuID>#xmlformat(deptno)#</StuID>
<SSAN>#xmlformat(Name)#</SSAN>
<Stu_Last>#xmlformat(City)#</Stu_Last>
</Itemdetails>
</cfoutput>

arunaumucAuthor
Known Participant
December 24, 2008
Bob,

I need some more help.

When I run the cfm file it is supposed to write each record to the attibutes in xml. But it repeats the emplid of all the records in the first itemdetail's emplid tag. It repeats for all the attributes of the record. There are 6 records in the database. For the second record, except for the first record in the database, it displays all the other 5 records.

Do you have any idea? Any help is appreciated.


===============xml output======================


<?xml version="1.0" encoding="UTF-8" ?>
- <Productrequested Name="Test" PODATE="12/24/2008" Supplier="UMUC web apps" SupplierName="Aruna">
- <Itemdetails>
<TaID>123 124 125 126 127</TaID>
<StuID>10 10 10 10 10</StuID>
<SSAN>Shilpa Aruna Sheila Cat Tom</SSAN>
<Stu_Last>Landover Greenbelt Silver spring Silverspring Silverspring</Stu_Last>
</Itemdetails>
- <Itemdetails>
<TaID>124 125 126 127</TaID>
<StuID>10 10 10 10</StuID>
<SSAN>Aruna Sheila Cat Tom</SSAN>
<Stu_Last>Greenbelt Silver spring Silverspring Silverspring</Stu_Last>
</Itemdetails>
- <Itemdetails>
<TaID>125 126 127</TaID>
<StuID>10 10 10</StuID>
<SSAN>Sheila Cat Tom</SSAN>
<Stu_Last>Silver spring Silverspring Silverspring</Stu_Last>
</Itemdetails>
- <Itemdetails>
<TaID>126 127</TaID>
<StuID>10 10</StuID>
<SSAN>Cat Tom</SSAN>
<Stu_Last>Silverspring Silverspring</Stu_Last>
</Itemdetails>
- <Itemdetails>
<TaID>127</TaID>
<StuID>10</StuID>
<SSAN>Tom</SSAN>
<Stu_Last>Silverspring</Stu_Last>
</Itemdetails>
</Productrequested>

=====================================

============CFM file============================

<cfquery datasource="Arunatest1" name="update">
select * from emp where deptno=10
</cfquery>
<cfoutput query="Update">
<TaID> #emplid# </TaID>
<StuID> #deptno# </StuID>
<SSAN> #Name# </SSAN>
<Stu_Last> #City# </Stu_Last>
</cfoutput>
<cfstoredproc datasource="Arunatest1" procedure="aruna.Su_pkg.Su_fnc">
<cfprocresult name="SUResult">
</cfstoredproc>

<cfxml variable="POXML">
<Productrequested Name="Test" PODATE=<cfoutput>"#Dateformat(now(),"mm/dd/yyyy")#"</cfoutput> Supplier="UMUC web apps" SupplierName="Aruna">
<cfoutput query="Update">
<Itemdetails>
<TaID> <cfoutput> #xmlformat(emplid)# </cfoutput></TaID>
<StuID> <cfoutput> #xmlformat(deptno)# </cfoutput></StuID>
<SSAN> <cfoutput> #xmlformat(Name)# </cfoutput></SSAN>
<Stu_Last> <cfoutput> #xmlformat(City)# </cfoutput></Stu_Last>
</Itemdetails>
</cfoutput>
</Productrequested>
</cfxml>

<cfoutput>
<cfset XMLTextForFile=ToString(POXML)>
<cfset varFile="D:\WebSites\WebServices\Aruna\student.xml">
<cffile action="write" file="#varFile#" output="#XMLTextForFile#">
</cfoutput>


arunaumucAuthor
Known Participant
December 24, 2008
Bob,

You are right. I was not eloborate. It was giving me a matching tag closing error at </cfoutput> to start with, It was not reading the cfm file due to the that error. Thanks for the corrections. I made all the above suggested changes and it worked. Thanks a million. Have a great christmas.
Inspiring
December 23, 2008
You might also need to use the XmlFormat function to escape any special characters inside your data.
<TaID> #emplid# </TaID> Should be <TaID> #XmlFormat(emplid)# </TaID>
Inspiring
December 23, 2008
Can you elaborate on "It doesnot work"? What is the expected result of your code vs. what actually occurs? What error messages, if any, do you get?

A couple items to check:

1. Your final <Productrequested> should be </Productrequested> to close your document.

2. Should <Itemdetails> be opened and closed inside your cfoutput query tag? Are you trying to create a <Itemdetails> element for each row in your query results?