从ColdFusion构建XML
我正在ColdFusion中构建一些XML,以便将数据发送到QuickBooks。我可以使用从ColdFusion构建XML,xml,coldfusion,Xml,Coldfusion,我正在ColdFusion中构建一些XML,以便将数据发送到QuickBooks。我可以使用精细化工具中的数据构建变量。像这样: <cfoutput query="get"> <cfset #x# = ' <InvoiceAddRq> <InvoiceAdd> <CustomerRef> <ListID>XXXXX</ListID> </Cust
精细化工具中的数据构建变量。像这样:
<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,在其中我循环使用
中的
来查看行项目详细信息。这就是我想做的:
<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的属性。我试图弄清楚如何编写一些XML,然后执行查询和循环以获取行项目的详细信息,然后返回XML。我不知道该怎么做。
我希望这是有意义的,任何帮助都将不胜感激。尝试用cfoutput和cfsavecontent包装您的xml构建。如果您在.cfm或.cfc文件中,它不应该认为cfquery或cfloop(或任何cf~标记)实际上是xml的一部分,在执行页面时,该字符串将被剥离。您可以尝试
或
构建XML字符串
:
:
根据您使用的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>
在这里做点什么
在这里做点什么
#复述#
您能提供更多细节吗?看起来你笔记中的一些标签不见了。如果我们可以在上下文中看到代码,这也会很有帮助………因为它将和视为XML的属性。“哈?你不能将cf代码嵌入这样的CFSET中。”。使用CFSAVECONTENT或使用字符串连接。
<cfsavecontent variable="your_xml_var">
<InvoiceAddRq>
<cfloop query="your_query">
<Anothertag />
</cfloop>
</InvoiceAddRq>
</cfsavecontent>
<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>