首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从ColdFusion构建XML

从ColdFusion构建XML
EN

Stack Overflow用户
提问于 2010-11-09 02:10:23
回答 3查看 1.1K关注 0票数 3

为了向QuickBooks发送数据,我在ColdFusion中构建了一些XML。我可以使用<cfoutput> fine中的数据构建变量。如下所示:

代码语言:javascript
运行
复制
<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>遍历行项目详细信息。这就是我想要做的:

代码语言:javascript
运行
复制
<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。我对如何做这件事感到困惑。我希望这是有意义的,任何帮助都会非常感谢。

EN

回答 3

Stack Overflow用户

发布于 2010-11-09 04:34:25

您可以尝试使用<cfxml><cfsavecontent>来构建XML字符串。

cfxml

代码语言:javascript
运行
复制
<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

代码语言:javascript
运行
复制
<cfsavecontent variable="your_xml_var">
  <InvoiceAddRq>
    <cfloop query="your_query">
      <Anothertag />
    </cfloop>
  </InvoiceAddRq>
</cfsavecontent>
票数 7
EN

Stack Overflow用户

发布于 2010-11-09 03:03:30

尝试在cfoutput和cfsavecontent中包装你的xml构建如果你在一个.cfm或.cfc文件中,它不应该认为cfquery或cfloop (或任何cf~标签)实际上是xml的一部分,它会在页面执行时被剥离。

票数 1
EN

Stack Overflow用户

发布于 2011-05-24 20:14:23

根据您使用的CF版本,您可能希望“滚动您自己的”响应,并简单地手动生成XML字符串。如果您想要将XML输出到屏幕上,请确保进行重置,这样您就不会向屏幕上发送原始XML以外的任何内容。此外,确保在浏览器中查看w/时关闭CF调试,否则输出将无法正确显示。

代码语言:javascript
运行
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4126644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档