【发布时间】:2016-07-07 20:42:17
【问题描述】:
我在 ColdFusion 中编写了一个脚本,该脚本在数据库表中抓取我网站的所有 HTML 内容并创建一个 XML 文档对象。以下是我到目前为止的代码。
<!--- Get page info --->
<cfquery name="qPageInfo" datasource="#application.datasource#">
SELECT top 800 id, title, info, app
FROM sitePublic
</cfquery>
<cfdump var="#qPageInfo#">
<!--- Creating XML document object w/ sitePublic data --->
<cfxml variable="xmlPageInfo">
<page>
<cfoutput query="qPageInfo">
<id>#qPageInfo.id#</id>
<pagecontent>#Trim("#XMLFormat(qPageInfo.info)#")#</pagecontent>
</cfoutput>
</page>
</cfxml>
<!---<cfdump var="#xmlPageInfo#">--->
<!--- Need to figure out how to output to a file --->
<cffile action="write" file="%filepath%/webcontent.xml" output="#qPageInfo#">
我能够成功地对 XML 文档对象执行 cfdump,并将所有网页的所有内容转储到浏览器窗口中。
但是,我似乎无法工作的部分是最后一行,<cffile> 将 XML 数据输出到 XML 文件。以下是我在尝试运行时遇到的错误。
表达式请求了一个变量或一个中间表达式结果作为一个简单的值。但是,结果不能转换为简单值。简单值是字符串、数字、布尔值和日期/时间值。查询、数组和 COM 对象是复值的示例。
错误的最可能原因是您尝试将复杂值用作简单值。例如,您尝试在 cfif 标记中使用查询变量。
我是 ColdFusion 的新手,所以我可能会在我的代码中遗漏一些东西,有人知道如何解决这个问题吗?
【问题讨论】:
-
与您的问题无关,但嵌套函数调用时不需要引号或额外的井号。即使用
#Trim( XMLFormat(qPageInfo.info) )#而不是#Trim("#XMLFormat(qPageInfo.info)#")#。 -
不应该
output="#qPageInfo#"是output="#xmlPageInfo#"您构建 xml,然后使用查询输出而不是 xml。 -
对于延迟回复,我深表歉意。感谢 Leigh 和 haxtbh 向我指出这些细节。
标签: html sql xml coldfusion coldfusion-10