带有cfloop的Coldfusion cfset XML变量

时间:2019-11-16 20:28:33

标签: xml coldfusion cfml

我想看看您是否能够为我提供一些语法。...我一直在尝试构建一个包含用户数据的XML数据集。但是,当我设置用户数据的循环时,XML包含cfloop代码。

代码如下:

<cfset map_vars = '<MAP>" +  "<location>#get_alert.address#</location>" +
                    <cfloop query="get_users">
                    "<user_info>" + 
                    "<user_name>#get_users.sub_firstname# #get_users.sub_lastname#</user_name>" + 
                    "<user_lat>#get_users.CAD_Call_lat#</user_lat>" + 
                    "<user_lon>#get_users.CAD_Call_lon#</user_lon>" + 
                    "<user_img>https://s3.amazonaws.com/media.wbur.org/wordpress/1/files/2015/03/AP736858445562.jpg</user_img>" +
                    "</user_info>" + 
                    </cfloop>
                    "</MAP>'>

输出是什么

        <MAP>" +  "<location>12345 LINCOLN HILL RD Martinsville</location>" +
                    <cfloop query="get_users">
                    "<user_info>" + 
                    "<user_name>Bill Jones</user_name>" + 
                    "<user_lat>41.1421443662058</user_lat>" + 
                    "<user_lon>-81.5781682078555</user_lon>" + 
                    "<user_img>https://s3.amazonaws.com/media.wbur.org/wordpress/1/files/2015/03/AP736858445562.jpg</user_img>" +
                    "</user_info>" + 
                    </cfloop>
                    "</MAP>

所以您可以看到它包含cfloop标记。

任何想法都值得赞赏!

3 个答案:

答案 0 :(得分:4)

字符串以单引号开头,并且必须以单引号结尾。但是,我将使用cfsavecontent标签。这使所有内容更具可读性

<cfsavecontent variable="map_vars"><cfoutput>
    <MAP><location>#get_alert.address#</location>
        <cfloop query="get_users">
            <user_info> 
                <user_name>#get_users.sub_firstname# #get_users.sub_lastname#</user_name> 
                <user_lat>#get_users.CAD_Call_lat#</user_lat> 
                <user_lon>#get_users.CAD_Call_lon#</user_lon> 
                <user_img>https://s3.amazonaws.com/media.wbur.org/wordpress/1/files/2015/03/AP736858445562.jpg</user_img>
            </user_info> 
        </cfloop>
    </MAP>
</cfoutput></cfsavecontent>

有一个cfxml标签有助于验证:https://cfdocs.org/cfxml

答案 1 :(得分:2)

在Bernhard的答案中,我将添加encodeForXML()以确保正确地转义了字符串。

<cfsavecontent variable="map_vars"><cfoutput>
    <MAP><location>#EncodeForXML(get_alert.address)#</location>
        <cfloop query="get_users">
            <user_info> 
                <user_name>#EncodeForXML(get_users.sub_firstname)# #EncodeForXML(get_users.sub_lastname)#</user_name> 
                <user_lat>#EncodeForXML(get_users.CAD_Call_lat)#</user_lat> 
                <user_lon>#EncodeForXML(get_users.CAD_Call_lon)#</user_lon> 
                <user_img>https://s3.amazonaws.com/media.wbur.org/wordpress/1/files/2015/03/AP736858445562.jpg</user_img>
            </user_info> 
        </cfloop>
    </MAP>
</cfoutput></cfsavecontent>

答案 2 :(得分:1)

实际上是在玩了几件事之后。。。通过删除map标记之前和之后的单引号使它起作用。

谢谢James&Bernhard的反馈。完美运作。你们是国王!!!

谢谢!