Coldfusion XML输出注入doc头信息

时间:2013-04-16 23:40:22

标签: xml coldfusion xml-parsing httprequest

我一直在查看最后几个小时的事情,我无法想出这一个!最终,我有一些来自HTTPheader的xml数据:

<cfset xmlPOST = GetHTTPRequestData().content>
<cfset xmlDOM = XmlParse(xmlPOST)>
<cfset BCsetup = xmlDOM.cXML.Request.PunchOutSetupRequest.BuyerCookie>

我正在尝试获取BuyerCookie,使用它并将其放入新的xml文档中。如果我现在cfoutput BCsetup,它给了我正确的价值(比方说12345)。

第二个我将它作为输出放入XML中,它抛出<xml version="1.0" encoding="UTF-8"?><BuyerCookie>12345</BuyerCookie&gt;而不是12345。

我已经尝试了从toString()到cfsavecontent的所有内容,尝试重新保存变量和直接文本等等。我不能为我的生活弄清楚如何使这项工作。

更新:这是如上所述执行的代码:

<cfset BCsetup = xmlDOM.cXML.Request.PunchOutSetupRequest.BuyerCookie> 


<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.020/cXML.dtd">
<cXML payloadID="2009-11-02T13:27:53+10:00" timestamp="2009-11-02T13:27:53+10:00">
  <Response>
    <Status code="200" text="OK"/>
    <PunchOutSetupResponse>
      <StartPage>
        <URL>https://mysite.com/testpost.cfm?BuyerCookie=<cfoutput>#BCsetup#</cfoutput></URL>
      </StartPage>
    </PunchOutSetupResponse>
  </Response>
</cXML>

2 个答案:

答案 0 :(得分:1)

<cfset BCsetup = xmlDOM.cXML.Request.PunchOutSetupRequest.BuyerCookie> 

引入整个XML元素而不是特定值。如果你改变它以引入xmlText它应该解决你的问题

<cfset BCsetup = xmlDOM.cXML.Request.PunchOutSetupRequest.BuyerCookie.xmlText>

我建议您在设置后运行<cfdump var="#BCSetup#" abort>以确保获得所需的值。

答案 1 :(得分:0)

您的代码正在获取xmldom元素,而不仅仅是它的值,只是将.adml文件添加到结尾以获取文本而不是元素。