• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

XMLSearch - Node Help

Guest
Jul 02, 2009 Jul 02, 2009

Copy link to clipboard

Copied

Hi Folks,

I've just recently started playing around with webservices and xml.  I have however come across an xml file (returned via cfhttp) that has a totally different structure to every other I've worked with so far.

I'm struggling to figure out the correct syntax to use in order to loop through the elements I need.

Here's an excerpt from the XML being returned;

<Report xsi:schemaLocation="LeadBreakdown http://83.142.224.108/ReportServer$sql2005?%2fRelational+Reports%2fLeadBreakdown&rs%3aFormat=XML&rc%..." Name="LeadBreakdown">

<Report>

<Report_Group1_Collection>

<Report_Group1>

<Detail_Collection>
<Detail Row="1" TransactionId="7049681" UID="btpo-y-d" ClickTime="2009-06-26T15:00:49" TransactionTime="2009-06-26T16:28:51" MID="34221" Merchant="Goldsmiths" Product="Goldsmiths" PID="5698" TransactionValue="180" Status="Validated" AC="25.20" Completed="2009-06-26T16:28:51"/>
</Detail_Collection>
</Report_Group1>

<Report_Group1>

<Detail_Collection>
<Detail Row="2" TransactionId="7054422" UID="btpo-y-d" ClickTime="2009-06-27T14:53:43" TransactionTime="2009-06-27T15:27:29" MID="34221" Merchant="Goldsmiths" Product="Goldsmiths" PID="5698" TransactionValue="111.25" Status="Validated" AC="15.58" Completed="2009-06-27T15:27:29"/>
<Detail Row="3" TransactionId="7054422" UID="btpo-y-d" ClickTime="2009-06-27T14:53:43" TransactionTime="2009-06-27T15:27:29" MID="34221" Merchant="Goldsmiths" Product="Goldsmiths" PID="5698" TransactionValue="111.25" Status="Validated" AC="15.58" Completed="2009-06-27T15:27:29"/>
<Detail Row="4" TransactionId="7054422" UID="btpo-y-d" ClickTime="2009-06-27T14:53:43" TransactionTime="2009-06-27T15:27:29" MID="34221" Merchant="Goldsmiths" Product="Goldsmiths" PID="5698" TransactionValue="111.25" Status="Validated" AC="15.58" Completed="2009-06-27T15:27:29"/>
<Detail Row="5" TransactionId="7054422" UID="btpo-y-d" ClickTime="2009-06-27T14:53:43" TransactionTime="2009-06-27T15:27:29" MID="34221" Merchant="Goldsmiths" Product="Goldsmiths" PID="5698" TransactionValue="111.25" Status="Validated" AC="15.58" Completed="2009-06-27T15:27:29"/>
</Detail_Collection>
</Report_Group1>

</Report_Group1_Collection>
</Report>
</Report>

And this is the code I'm currently using (the bold part is what I'm struggling with - everything else is there for reference so you can get a better idea of what I'm trying to do);

<!--- Include the XSD DateConvert Function to convert the raw date/time sent back in the XML --->
<cfinclude template="../functions/xsddateconvert.cfm">


<cfhttp url="wsurl" method="GET" resolveurl="NO" throwonerror="yes"><cfhttpparam type="Header" name="Accept-Encoding" value="deflate;q=0"></cfhttp>

<cfscript>
  xmlContent = XmlParse(REReplace( cfhttp.FileContent, "^[^<]*", "", "all" ));
  xmlNode = xmlSearch(xmlContent, "//*[local-name()='Detail']");
</cfscript>

<!--- Table --->
<table cellpadding="5" width="100%">
<tr>
<td><b>Sale Date/Time</b></td>
<td><b><nobr>Programme Name</nobr></b></td>
<td><b>Commission</b></td>
<td><b>Clickref</b></td>
<td><b>EventID</b></td>
<td><b>Click Date/Time</b></td>
<td><b>Referrer</b></td>
</tr>


<tr>
<cfloop index="node" array="#xmlNode#">
  <cfset date = #Node.TransactionTime.xmlText#>
  <cfset programName = #Node.Merchant.xmlText#>
  <cfset commission = #Node.AC.xmlText#>
  <cfset clickref = #Node.UID.xmlText#>
  <cfset eventID = #Node.TransactionId.xmlText#>
  <cfset clickdate = #Node.ClickTime.xmlText#>
  <cfset referrer = 'Not Passed'>
 
  <cfoutput>
   <td>#LSDateFormat(date, "dd/mm/yy")# #LSTimeFormat(date, "HH:mm")#</td>
   <td>#programName#</td> 
   <td align="right">&pound;#Numberformat(commission, 0.00)#</td> 
   <td>#clickref#</td></tr>
   <td>#eventID#</td></tr>
   <td>#LSDateFormat(clickdate, "dd/mm/yy")# #LSTimeFormat(clickdate, "HH:mm")#</td></tr>
   <td>#referrer#</td></tr>
</cfoutput>
</cfloop>

</table>

I've been struggling with this since yesterday, so any help would be *very* appreciated

TOPICS
Advanced techniques

Views

843

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Enthusiast , Jul 03, 2009 Jul 03, 2009

I think the XmlSearch part should work properly, returning 5 rows but

you will have an error when outputting the results because you need to

access Node.XmlAttributes.TransactionTime instead of

Node.TransactionTime.

Mack

Votes

Translate

Translate
Guest
Jul 03, 2009 Jul 03, 2009

Copy link to clipboard

Copied

Anyone?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Jul 03, 2009 Jul 03, 2009

Copy link to clipboard

Copied

I think the XmlSearch part should work properly, returning 5 rows but

you will have an error when outputting the results because you need to

access Node.XmlAttributes.TransactionTime instead of

Node.TransactionTime.

Mack

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guest
Jul 03, 2009 Jul 03, 2009

Copy link to clipboard

Copied

Thanks Mack,

That was exactly what I needed!  I had to remove .xmltext from the end too, but it works perfectly now.

Your help is very much appreciated, it was driving me insane! 😄

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Jul 03, 2009 Jul 03, 2009

Copy link to clipboard

Copied

LATEST
<cfdump var="#node#">

inside the loop would have helped you see exactly how to access the info.

Mack

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Resources
Documentation