使用ColdFusion处理XML复杂对象响应

时间:2017-05-18 16:19:20

标签: xml coldfusion cfhttp

我正在使用cfhttp调用服务调用,我在其中设置cfhttpparam type ='url'name $ format value ='xml'以获取xml中的响应。我已经转储了我的变量,filecontent中的所有内容都显示格式为xml我认为因为它说明并列出了我要求的所有变量。所以我假设使用XMLParse结果将允许我从结果中获取数据并将它们定义为我可以在网络上使用的变量。

<cfset request.getResponse = structNew() />
<cfhttp
method="get"
url="http://testsite"
result="request.getResponse " username="xxxxxx" password="test">
<cfhttpparam type="url" name="$expand" value="GetRoles,GetVendors" />
<cfhttpparam type="url" name="$format" value="xml" />
</cfhttp>
<cfdump var="#request.getResponse #">

<cfset FullResponse = XMLParse(request.getResponse )>

<cf_upXMLToStruct XML="#FullResponse#" SoftError="false" variable = "structResponse">


        <cfset rspFirstName = UCASE(trim(structResponse.XML_STRUCT.FirstName)) />
        <cfset rspShoteName = trim(structResponse.XML_STRUCT.ShortName) />
        <cfset rspCompanyName = trim(structResponse.XML_STRUCT.CompanyName) />

但是我收到了一个错误:

  

无法将复杂对象类型转换为简单值。

我还是XML的新手,所以我不确定我需要做些什么来评估XML。以下是我收到的回复片段:

<entry>
<id>http:// TEST/VendorDetailsSet('1000000240')</id>
<title type="text">VendorDetailsSet('1000000240')</title>
<updated>2017-05-18T15:24:44Z</updated>
<category term=" TEST.VendorDetails" 
scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
<link href="VendorDetailsSet('1000000240')" rel="self" 
title="VendorDetails"/>
<content type="application/xml">
<m:properties>
<d:Address m:type=" TEST.AddressDetails">
<d:HouseNumber/>
<d:Street1/>
<d:Street2/>
<d:City/>
<d:Region/>
<d:PostalCode/>
<d:Country/>
<d:HomePhone/>
<d:MobileNumber/>
<d:FaxNumber/>
<d:CompanyEmail/>
</d:Address>
<d:VendorNumber>1000000240</d:VendorNumber>
<d:VendorName>ABC COMPANY</d:VendorName>
</m:properties>
</content>
</entry>

在我可以使用XMLParse之前,是否需要对结果执行某些操作?还是可以使用另一个XML标记来评估结果?

我仍然在ColdFusion环境中学习XML,所以任何帮助或建议来帮助我学习如何从XML中获取数据都会很棒。

我也可以选择以JSON格式返回结果,如果这样可以更容易。

2 个答案:

答案 0 :(得分:1)

我想出了我的问题,响应在响应中包含多个组件,我只需要将XMLParse更改为

<cfset FullResponse = XMLParse(request.getResponse.Filecontent)> 

解析了主要的XML部分。感谢所有帮助我的人。

答案 1 :(得分:0)

  1. 转储变量以查看格式

  2. 如果value是数组,则使用arrayToList转换为字符串

相关问题