Skip to main content
Participating Frequently
February 4, 2020
Answered

Problem parsing XML data

  • February 4, 2020
  • 1 reply
  • 702 views

Hi everyone, I tried to parse a xml data but i couldnt figure it out.

I get this error:

Complex object types cannot be converted to simple values.

 

This is my code :

<cfset the_url = 'https://www.goodreads.com/author/list/210456?format=xml&key=xxxxxxxxxxxxxxxx' />

<cfhttp url="#the_url#" method="get" result="Results" timeout="999">

<cfset asd = XmlParse(Results)>

 

 

This topic has been closed for replies.
Correct answer WolfShade

Because what is returned is more than just the content.  It also returns header information and some other things, so you have to specify "filecontent", unless you're CFDUMPing the result.

 

V/r,

 

^ _ ^

1 reply

Charlie Arehart
Community Expert
Community Expert
February 4, 2020

Do a dump of the results var.  Is it xml? And nothing else?

 

Some other tips:

  • In doing the dump, you should see what comes from the cfhttp, separate from any output of the page doing the dump (including cf debugging output) 
  • If the page being called in the_url is a cfml page, you want to be sure IT is not returning debug output. The xmlparse will choke on that. 
  • Another approach is to cfoutput (rather than cfdump) the results var, and then do a view>source in your browser to see what's coming back
  • Finally, I can't recall if xmlparse REQUIRES an xml "prolog" line, as the first in an xml string to parse. That would start with a line showing <?xml .. I'm writing on my phone and can't readily recall/test, but you can see the full line in the cfml docs page on xmlparse

Let us know how it goes. 

/Charlie (troubleshooter, carehart. org)
ressifeltAuthor
Participating Frequently
February 4, 2020

Yes is a xml file 

Content-Typeapplication/xml; charset=utf-8

 

I find the soluiton i change the variable as   'Results.filecontent'   and it worked.

But still  dont know why didn't work at the first time

WolfShade
WolfShadeCorrect answer
Legend
February 4, 2020

Because what is returned is more than just the content.  It also returns header information and some other things, so you have to specify "filecontent", unless you're CFDUMPing the result.

 

V/r,

 

^ _ ^