Might be stating the obvious, but have you used cfdump to do a visual check
of your struct outhere ?

> -----Original Message-----
> From: Andres [mailto:[EMAIL PROTECTED]]
> Sent: Friday, 1 March 2002 12:50 pm
> To: CF-Talk
> Subject: XML question
>
>
> This a rather long email...
>
> i am trying to query the USPS international rate calculator via their
> API. Their response is an XML document which i am parsing via SOXML.
> This is a great tool!
>
> an example of the xml that i receive from USPS is as
> follows..==================================================
> <?xml version="1.0"?>
> <IntlRateResponse>
>       <Package ID="0">
>               <Prohibitions>Currency of the Albanian State
> Bank (Banknotes in lek).
> Extravagant clothes and other articles contrary to Albanians' taste.
> Items sent by political emigres. </Prohibitions>
>               <Restrictions>Hunting arms require an import
> permit. Medicines for
> personal use are admitted provided the addressee has a medical
> certificate.</Restrictions>
>               <Observations>1. Letter packages may not
> contain dutiable articles. 2.
> Parcel post service extends only to: Berat Konispol Milot
> Bilisht Korce
> Peqin</Observations>
>               <CustomsForms>Postal Union Mail (LC/AO): PS
> Form 2976 or 2976-A (see
> 123.61) Parcel Post: PS Form 2976-A inside 2976-E
> (envelope)</CustomsForms>
>               <ExpressMail>Country Code AL Reciprocal Service
> Name EMS Required
> Customs Form/Endorsement 1. For correspondence and business
> papers: PS
> Form 2976, Customs - CN 22 (Old C 1) and Sender's Declaration (green
> label). Endorse item clearly next to mailing label as BUSINESS
> PAPERS.</ExpressMail>
>               <AreasServed>Tirana.</AreasServed>
>               <Service ID="0">
>                       <Pounds>2</Pounds>
>                       <Ounces>0</Ounces>
>                       <MailType>Package</MailType>
>                       <Country>ALBANIA</Country>
>                       <Postage>87</Postage>
>                       <SvcCommitments>See Service
> Guide</SvcCommitments>
>                       <SvcDescription>Global Express
> Guaranteed (GXG) Document
> Service</SvcDescription>
>                       <MaxDimensions>Max. length 46", depth
> 35", height 46" and max. girth
> 108"</MaxDimensions>
>                       <MaxWeight>22</MaxWeight>
>               </Service>
>               <Service ID="1">
>                       <Pounds>2</Pounds>
>                       <Ounces>0</Ounces>
>                       <MailType>Package</MailType>
>                       <Country>ALBANIA</Country>
>                       <Postage>96</Postage>
>                       <SvcCommitments>See Service
> Guide</SvcCommitments>
>                       <SvcDescription>Global Express
> Guaranteed (GXG) Non-Document
> Service</SvcDescription>
>                       <MaxDimensions>Max. length 46", depth
> 35", height 46" and max. girth
> 108"</MaxDimensions>
>                       <MaxWeight>22</MaxWeight>
>               </Service>
>       </Package>
> </IntlRateResponse>==================================================
>
> I am very new using XML, but the way soxml parses it is by using
> cfscript and looping thorugh the array for each main object
> in the xml
> doc.
>
> Following the xml2cf section, i basically loop through the array of
> objects in the xml doc as follows:
> ==================================================
> <cfif isArray(outhere.IntlRateResponse.Package)>
>   <cfloop index="package_pointer" from="1"
> to="#ArrayLen(outhere.IntlRateResponse.Package)#">
>    <cfscript>
>               sProhivitions =
> outhere.IntlRateResponse.Package[package_pointer].Prohibitions.value;
>               sRestrictions =
> utoutherehere.IntlRateResponse.Package[package_pointer].Restri
> ctions.valu
> e;
>               sObservations =
> outhere.IntlRateResponse.Package[package_pointer].Observations.value;
>               sCustomsForms =
> uthouthereere.IntlRateResponse.Package[package_pointer].Custom
> sForms.valu
> e;
>               sExpressMail =
> outhere.IntlRateResponse.Package[package_pointer].ExpressMail.value;
>               sAreasServed =
> outhere.IntlRateResponse.Package[package_pointer].AreasServed.value;
>     </cfscript>
> <cfelse>
> <cfscript>
>       sProhivitions =
> outhere.IntlRateResponse.Package[package_pointer].Prohibitions.value;
>               sRestrictions =
> utoutherehere.IntlRateResponse.Package[package_pointer].Restri
> ctions.valu
> e;
>               sObservations =
> outhere.IntlRateResponse.Package[package_pointer].Observations.value;
>               sCustomsForms =
> uthouthereere.IntlRateResponse.Package[package_pointer].Custom
> sForms.valu
> e;
>               sExpressMail =
> outhere.IntlRateResponse.Package[package_pointer].ExpressMail.value;
>               sAreasServed =
> outhere.IntlRateResponse.Package[package_pointer].AreasServed.value;
>     </cfscript>
> </cfif>==================================================
>
>
> This, so far, works fine. However, the problem i enconter is
> when i try
> to utilize the second object: "Service". Whe i run the
> following code,
>
>
> <cfif isArray(outhere.IntlRateResponse.Service)>
>       <cfloop index="service_pointer" from="1"
> to="#ArrayLen(outhere.IntlRateResponse.Service)#">
>        <cfscript>
>       //Lets grab the nodes of the information we want to display
>               sPounds =
> outhere.IntlRateResponse.Service[service_pointer].Prohibitions.value;
>               sOunces =
> utoutherehere.IntlRateResponse.Service[service_pointer].Restri
> ctions.valu
> e;
>               sMailType =
> outhere.IntlRateResponse.Service[service_pointer].Observations.value;
>               sCountry =
> uthouthereere.IntlRateResponse.Service[service_pointer].Custom
> sForms.valu
> e;
>               sPostage =
> outhere.IntlRateResponse.Service[service_pointer].ExpressMail.value;
>               sSvcCommitments =
> outhere.IntlRateResponse.Service[service_pointer].AreasServed.value;
>               sSvcDescription =
> outhere.IntlRateResponse.Service[service_pointer].AreasServed.value;
>               sMaxDimensions =
> outhere.IntlRateResponse.Service[service_pointer].AreasServed.value;
>               sMaxWeight =
> outhere.IntlRateResponse.Service[service_pointer].AreasServed.value;
>     </cfscript>
> </cfif>
>
> CF throws an error saying that it cannot resolve the parameter
> outhere.IntlRateResponse.Service. Even though this does exist
> and indeed
> is to be an array since there are two of them.
>
> Any help would be much appreciated!
>
> Thank you
>
>
> --------------------------------------------
> Andres Leon
> [EMAIL PROTECTED]
> Vitacost.com
> 2049 High Ridge Road
> Boynton Beach, Fl 33426
> 
______________________________________________________________________
Get Your Own Dedicated Windows 2000 Server
  PIII 800 / 256 MB RAM / 40 GB HD / 20 GB MO/XFER
  Instant Activation � $99/Month � Free Setup
  http://www.pennyhost.com/redirect.cfm?adcode=coldfusionb
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/[email protected]/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists

Reply via email to