【问题标题】:Coldfusion cfset XML variable with cfloopColdfusion cfset XML 变量与 cfloop
【发布时间】:2019-11-16 20:28:33
【问题描述】:

我想看看你是否能帮助我一些语法......我一直在尝试构建一个包含用户数据的 XML 数据集。但是,当我 cfset 用户数据的循环时,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 标签。

任何想法都非常感谢!!!

【问题讨论】:

    标签: xml coldfusion cfml


    【解决方案1】:

    字符串以单引号开始,并且必须以单引号结束。但是,我会使用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

    【讨论】:

      【解决方案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>
      

      【讨论】:

      • 感谢两位的反馈。我非常感激。我正在尝试将其添加到代码中,一切似乎都正确,但我收到以下错误,即位置未定义。我检查了标签以确保它们相同,但仍然出现错误。如您所见,我还添加了所有引号并删除了空格....
      • '" + "#EncodeForXML(get_alert.address)#" + "" + "#EncodeForXML(get_users.sub_firstname)##EncodeForXML(get_users.sub_lastname)#" + "#EncodeForXML(get_users.CAD_Call_lat)#" + "#EncodeForXML(get_users.CAD_Call_lon)#" + "s3.amazonaws.com/media.wbur.org/wordpress/1/files/2015/03/…>" + "" + "'
      • var parser = new DOMParser(); var xmlDoc = parser.parseFromString(xml_data, "text/xml"); var address = xmlDoc.getElementsByTagName(location)[0].textContent; var users = xmlDoc.getElementsByTagName("user_info"); var user_list = [];
      • 这是错误:TypeError: undefined is not an object (evalating 'xmlDoc.getElementsByTagName(location)[0].textContent')
      • 你应该写一个关于那个的新问题。
      【解决方案3】:

      实际上在玩了一些东西之后......只需删除地图标签前后的单引号即可使其工作。

      感谢 James 和 Bernhard 的反馈。完美运行。你们才是王道!!!!

      谢谢!

      【讨论】:

      • 您应该回来并将 Bernhard 的答案标记为正确。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多