将数组转换为自定义的xml

时间:2014-04-13 23:46:39

标签: xml arrays json coldfusion

所以,我从查询中得到以下数组:

(findpercentage是我使用的cfquery的名称)

<cfset pieData = ArrayNew(1)>

    <cfset dataItem =[ 'Open', '#findpercentage.OPENS#' ]>
    <cfset ArrayAppend(pieData, dataItem)>  

    <cfset dataItem =[ 'Bounce', '#findpercentage.BOUNCE#' ]>
    <cfset ArrayAppend(pieData, dataItem)>  

    <cfset dataItem =[ 'Deferred', '#findpercentage.DEFERRED_EVENT#' ]>
    <cfset ArrayAppend(pieData, dataItem)>  

    <cfset dataItem =[ 'Dropped', '#findpercentage.DROPPED#' ]>
    <cfset ArrayAppend(pieData, dataItem)>  

    <cfset dataItem =[ 'Delivered', '#findpercentage.Delivered#' ]>
    <cfset ArrayAppend(pieData, dataItem)>

    <cfset dataItem =[ 'Processed', '#findpercentage.Processed#' ]>
    <cfset ArrayAppend(pieData, dataItem)>      

    <cfset dataItem =[ 'Spamreport', '#findpercentage.Spamreport#' ]>
    <cfset ArrayAppend(pieData, dataItem)>  

数组看起来像following

数组大小可以继续增长或缩小(例如,有时可能有2个数组,有时可能有20个数组)。

有没有办法,从上面的数组中,我可以生成如下的XML:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <item>
        <value>31.4164</value>
        <label>Open</label>
        <colour>FFFF10AA</colour>
    </item>
    <item>
        <value>3.2240</value>
        <label>Bounce</label>
        <colour>FFAA0AAA</colour>
    </item>
    <item>
        <value>0.2430</value>
        <label>Deferred</label>
        <colour>FF5505AA</colour>
    </item>
    <item>
        <value>1.2799</value>
        <label>Dropped</label>
        <colour>FF0000AA</colour>
    </item>
    <item>
        <value>31.5584</value>
        <label>Delivered</label>
        <colour>FF0000AA</colour>
    </item>
    <item>
        <value>32.2290</value>
        <label>Processed</label>
        <colour>FF0000AA</colour>
    </item>
    <item>
        <value>0.0217</value>
        <label>Spamreport</label>
        <colour>FF0000AA</colour>
    </item>
</root>

我还需要找出一种方法来生成我在color标记中此刻硬编码的唯一颜色。

我将其转换为XML的原因是因为工具here只能理解XML或JSON。

请告诉我。

我的cfquery上的SerializeJSON结果名为findpercentage

{
    "COLUMNS": [
        "TOTAL_EVENTS",
        "OPENS",
        "BOUNCE",
        "DEFERRED_EVENT",
        "DROPPED",
        "DELIVERED",
        "PROCESSED",
        "SPAMREPORT"
    ],
    "DATA": [
        [
            267526,
            31.4164,
            3.224,
            0.243,
            1.2799,
            31.5584,
            32.229,
            0.0217
        ]
    ]
}

1 个答案:

答案 0 :(得分:1)

我最近不得不从查询结果中创建一个xml文件。基本上,我是这样做的:首先,使用或多或少结构合理的格式创建一个带有查询数据的变量。

<cfsavecontent variable="data">
<BurnRecords>
<cfoutput query="AllData">
more code
</cfoutput>
</BurnRecords>

接下来,使用正确的xml格式创建另一个变量

<cfxml casesensitive="yes" variable="xmldata">
<cfoutput>#Replace(data, chr(10) & chr(13) & chr(10) & chr(13), chr(10), "all")#</cfoutput>
</cfxml>

最后,将xml数据写入文件。

<cffile action="write" nameconflict="overwrite" file="#FileName#" output="#xmldata#">

编辑从此处开始

回想起来,我似乎过度工作了。这可能已经足够了。

<cfxml casesensitive="yes" variable="xmldata">
<BurnRecords>
<cfoutput query="AllData">
more code
</cfoutput>
</BurnRecords>