The liveDocs for dealing with complex datatypes say to do this:

Look at the WSDL complex type definition. Create a struct that matches
the type and configuration of the requested datat as a struct, and
pass it back into the webservice.

So for your situation, you should be able to get by like this:

<find_business generic="2.0" maxRows="10">
       <name>ABC Co.</name>
</find_business>

becomes

<cfset name = structNew()>

find_business["generic"] = "2.0";
find_business["maxRows"] = "10";
find_business ["ABC Co"] = "";

Is that getting you closer?

Laterz,
J



On Thu, 10 Feb 2005 14:21:38 -0500, Matthew Small <[EMAIL PROTECTED]> wrote:
> Are you saying that the webservice itself (non-CF I imagine, and it's not
> something you wrote) needs a complex datatype as a parameter?
> 
> Perhaps you could determine the exact XML structure it needs passed in (by
> going to its WSDL page) and create that structure in CF to pass.
> 
> - Matt Small
> 
> -----Original Message-----
> From: Doug James [mailto:[EMAIL PROTECTED]
> Sent: Thursday, February 10, 2005 1:17 PM
> To: CF-Talk
> Subject: Re: xml to struct help
> 
> Jared,
> 
> Thanks for the help.
> 
> What is actually happening is that I am trying to invoke a web service using
> cfinvoke. It will not
> accept an xml document because it throws an invalid argument exception. Boy
> do I wish it was as
> simple as parsing a string into an xml doc and passing that in. When using a
> web service that
> expects a complex element (made up of other elements) cfinvoke gets passed a
> CFMX structure
> <http://livedocs.macromedia.com/coldfusion/6.1/htmldocs/webser23.htm>. So I
> *have* to convert the
> xml to a struct.
> 
> And yes, I am having trouble. Lots and lots of trouble!
> 
> Maybe some MM experts could chime in here. <shrug />
> 
> Doug
> 
> Jared Rypka-Hauer - CMG, LLC wrote:
> > Sorry, mixing my examples up here...
> >
> > xmlRoot.xmlElement.xmlName=find_business
> > xmlRoot.xmlElement.xmlChildren would then contain a collection of
> > struct containers that hold your "name" children.
> >
> > Every element has a collection of attributes above and beyond the
> > obvious ones in your document. xmlRoot, xmlAttributes, xmlName,
> > xmlNSPrefix, xmlURI, etc. and if you're going to build a struct by
> > hand to mirror an XML document... eh, dude... I think you're going to
> > have some trouble.
> >
> > Why not create the string as a variable... just stick the text into a
> > var... then pass it into xmlParse and use that? It's going to be way
> > easier and much less frustrating than trying to cobble together a
> > mock-XML document.
> >
> > Just my opine...
> >
> > Laterz!
> > J
> >
> > On Thu, 10 Feb 2005 11:51:01 -0600, Jared Rypka-Hauer - CMG, LLC
> > <[EMAIL PROTECTED]> wrote:
> >
> >>XML isn't just a straigh-up struct... if you're going to reproduce an
> >>expected XML snippet into a well-formed XML document by hand, you need
> >>to recreate the whole thing or it just... won't work.
> >>
> >>Check out this example...
> >>http://w2ksrv1.neo.servequake.com/tmp/xmlexample.cfm
> >>
> >>If you click the title of the cfdump, it will rotate between simle,
> >>extended, and collapsed views... check out the extend version of the
> >>view in the bottom-left table cell.
> >>
> >>xmlRoot.xmlElement.xmlName=find_business
> >>xmlRoot.xmlElement.xmlChildren contains a collection of structs that
> >>represent url objects.
> >>
> >>XML isn't just a struct, or an array... if you're talking XML and it
> >>needs to be validated, you're going to have to either be very VERY
> >>careful about how you create your structured object OR you should just
> >>write it out to a file, read it in via cffile, and xmlParse() it into
> >>a native XML binary object.
> >>
> >>Just remember, though... xmlSearch and xmlTransform both have rules,
> >>and those rules follow XML standards, and the format of the document
> >>IN MEMORY is critical or they just won't work.
> >>
> >>Laterz,
> >>J
> >>
> >>
> >>On Thu, 10 Feb 2005 11:26:07 -0500, Doug James <[EMAIL PROTECTED]> wrote:
> >>
> >>>Thanks for the suggestion.
> >>>
> >>>Unfortunately, it did not work. This is for a web service and
> <find_business> is a complex type
> >>>which equates to a struct.
> >>>
> >>>Calling all web service experts: please offer suggestions.
> >>>
> >>>Doug
> >>>
> >>>Micha Schopman wrote:
> >>>
> >>>>If you see name as a childNode, you might do this
> >>>>
> >>>><cfset find_business = structNew()>
> >>>><cfset find.business.attributes = arrayNew(1)>
> >>>><cfset find.business.childs = arrayNew(1)>
> >>>>
> >>>>And then each array entry gets a new struct :) With the key as structkey
> >>>>and value as strucktvalue.
> >>>>
> >>>>Micha Schopman
> >>>>Software Engineer
> >>>>
> >>>>Modern Media, Databankweg 12 M, 3821 AL  Amersfoort
> >>>>Tel 033-4535377, Fax 033-4535388
> >>>>KvK Amersfoort 39081679, Rabo 39.48.05.380
> >>>>
> >>>>------------------------------------------------------------------------
> >>>>------------------------------------------------------------------------
> >>>>-----
> >>>>Modern Media, Making You Interact Smarter. Onze oplossingen verbeteren
> >>>>de interactie met uw doelgroep.
> >>>>Wilt u meer omzet, lagere kosten of een beter service niveau? Voor meer
> >>>>informatie zie www.modernmedia.nl
> >>>>------------------------------------------------------------------------
> >>>>------------------------------------------------------------------------
> >>>>-----
> >>>>
> >>>>-----Original Message-----
> >>>>From: Doug James [mailto:[EMAIL PROTECTED]
> >>>>Sent: donderdag 10 februari 2005 14:55
> >>>>To: CF-Talk
> >>>>Subject: xml to struct help
> >>>>
> >>>>Please help, my forehead is very red and painful from banging against
> >>>>the wall over this one.
> >>>>
> >>>>Given this XML snippet:
> >>>><find_business generic="2.0" maxRows="10">
> >>>>      <name>ABC Co.</name>
> >>>></find_business>
> >>>>
> >>>>This struct accurately represents <find_business> with the "generic" and
> >>>>"maxRows" attributes.
> >>>>find_business = structNew();
> >>>>find_business.generic = "2.0";
> >>>>find_business.maxRows = "10";
> >>>>
> >>>>What I can't figure out is how to get <name> into the structure. If I do
> >>>>find_business.name = "ABC
> >>>>Co."; that is making the name an attribute but I need it as an element.
> >>>>
> >>>>Any suggestions?
> >>>>
> >>>>Doug James
> >>>>Hollings Cancer Center
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >
> >
> 
> 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Find out how CFTicket can increase your company's customer support 
efficiency by 100%
http://www.houseoffusion.com/banners/view.cfm?bannerid=49

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:194116
Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe: 
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54

Reply via email to