为了向QuickBooks发送数据,我在ColdFusion中构建了一些XML。我可以使用<cfoutput>
fine中的数据构建变量。如下所示:
<cfoutput query="get">
<cfset #x# =
'
<InvoiceAddRq>
<InvoiceAdd>
<CustomerRef>
<ListID>XXXXX</ListID>
</CustomerRef>
<ClassRef>
<ListID>XXXXX</ListID>
</ClassRef>
<TxnDate>2010-11-04</TxnDate>
<InvoiceLineAdd>
<ItemRef>
<ListID>XXXXX</ListID>
</ItemRef>
<Desc>XXXXX</Desc>
<Quantity>XXXXX</Quantity>
<Rate>XXXXX</Rate>
</InvoiceLineAdd>
</InvoiceAdd>
</InvoiceAddRq>
'
>
但我需要创建XML,在其中使用<cfset>
中的<cfloop>
遍历行项目详细信息。这就是我想要做的:
<cfoutput query="get">
<cfset #x# =
'
<InvoiceAddRq>
<InvoiceAdd>
<CustomerRef>
<ListID>XXXXX</ListID>
</CustomerRef>
<ClassRef>
<ListID>XXXXX</ListID>
</ClassRef>
<TxnDate>2010-11-04</TxnDate>
<cfquery name="getDetails">
</cfquery>
<cfloop query="getDetails">
<InvoiceLineAdd>
<ItemRef>
<ListID>XXXXX</ListID>
</ItemRef>
<Desc>XXXXX</Desc>
<Quantity>XXXXX</Quantity>
<Rate>XXXXX</Rate>
</InvoiceLineAdd>
</cfloop>
</InvoiceAdd>
</InvoiceAddRq>
'
>
这显然是不正确的,因为它看到的是XML的和as属性。我正在尝试找出如何编写一些XML,然后执行查询和循环以获取行项目详细信息,然后返回到XML。我对如何做这件事感到困惑。我希望这是有意义的,任何帮助都会非常感谢。
发布于 2010-11-08 20:34:25
您可以尝试使用<cfxml>
或<cfsavecontent>
来构建XML字符串。
<cfxml variable="your_xml_var" caseSensitive="yes">
<InvoiceAddRq>
<Anothertag>
</Anothertag>
<cfloop query="your_query">
<Somedata foo="#your_query.bar#">
#your_query.blah#
</Somedata>
</cfloop>
</InvoiceAddRq>
</cfxml>
<cfsavecontent variable="your_xml_var">
<InvoiceAddRq>
<cfloop query="your_query">
<Anothertag />
</cfloop>
</InvoiceAddRq>
</cfsavecontent>
发布于 2010-11-08 19:03:30
尝试在cfoutput和cfsavecontent中包装你的xml构建如果你在一个.cfm或.cfc文件中,它不应该认为cfquery或cfloop (或任何cf~标签)实际上是xml的一部分,它会在页面执行时被剥离。
发布于 2011-05-24 12:14:23
根据您使用的CF版本,您可能希望“滚动您自己的”响应,并简单地手动生成XML字符串。如果您想要将XML输出到屏幕上,请确保进行重置,这样您就不会向屏幕上发送原始XML以外的任何内容。此外,确保在浏览器中查看w/时关闭CF调试,否则输出将无法正确显示。
<cfsilent>
<cfset retVal = "">
<cfquery name="get">
DO SOMETHING HERE
</cfquery>
<cfloop query="get">
<cfset retVal &= "<InvoiceAddRq><InvoiceAdd><CustomerRef><ListID>XXXXX</ListID></CustomerRef>">
<cfset retVal &= "<ClassRef><ListID>XXXXX</ListID></ClassRef><TxnDate>2010-11-04</TxnDate>">
<cfquery name="getDetails">
DO SOMETHING HERE
</cfquery>
<cfloop query="getDetails">
<cfset retVal &= "<InvoiceLineAdd><ItemRef><ListID>XXXXX</ListID></ItemRef>">
<cfset retVal &= "<Desc>XXXXX</Desc><Quantity>XXXXX</Quantity><Rate>XXXXX</Rate></InvoiceLineAdd>">
</cfloop>
<cfset retVal &= "</InvoiceAdd></InvoiceAddRq>">
</cfloop>
</cfsilent>
<cfcontent reset="yes">#retVal#</cfcontent>
https://stackoverflow.com/questions/4126644
复制