xml - Coldfusion - 检查 XmlNode 是否存在

标签 xml coldfusion bluedragon

我一直在努力寻找解决方案。我的代码与我在 Google 搜索中看到的不同,而且我尝试过的任何方法都不起作用。基本上正如标题所暗示的那样,我想检查一个 Xml 节点是否存在。这是因为 YouTube 提要返回的 XML 不稳定。代码如下。

<cfset YouTubeXml = xmlParse(#YouTubeFavourites.FileContent#) />
<cfset group = XmlSearch(YouTubeXml, "//media:group") />    

<cfloop from="1" to="25" index="i">
    <cfoutput>
        #group[i]['media:thumbnail'][i]['url']#
    </cfoutput>
</cfloop>

基本上,错误表明 #group[i]['media:thumbnail'][i]['url']# 不存在。希望有人能帮忙。

最佳答案

下面的代码将检查以确保变量在尝试显示之前存在。嵌套方法是确保每个片段都存在的唯一方法。有一些功能可以让它看起来更漂亮,但这是另一个问题的主题。

<cfset YouTubeXml = xmlParse( YouTubeFavourites.FileContent ) />
<cfset group = XmlSearch( YouTubeXml, "//media:group" ) />

<cfoutput>
<cfloop from="1" to="25" index="i">
    <cfif StructKeyExists( Group, i )
        AND StructKeyExists( Group[ i ], 'media:thumbnail' )
        AND StructKeyExists( Group[ i ][ 'media:thumbnail' ], i )
        AND StructKeyExists( Group[ i ][ 'media:thumbnail' ][ i ], 'url' )>
        #group[i]['media:thumbnail'][i]['url']#
    </cfif>
</cfloop>
</cfoutput>

我觉得您使用 i 很奇怪变量名中有两次,但我不熟悉 Youtube API,所以这可能是正确的。

我在您的代码中更改了两处不需要的内容。我删除了额外的 ##签到 xmlParse()因为它已经在那里被视为变量。我也移动了<cfoutput>退出循环,因为声明 <cfoutput> 会导致轻微的性能损失多次。

关于xml - Coldfusion - 检查 XmlNode 是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15361500/

相关文章:

coldfusion - CFML2WDDX 错误 ColdFusion 11

coldfusion - 我们可以在 cftransaction 中编写的数量查询/语句是否有任何限制?

coldfusion - 为什么这个 cfscript 函数可以工作?

c - 如何用C语言解析XML标签中的值?

php - PHP 4 中的新 DOMDocument()

c# - 独占打开/修改 XML 文件?

coldfusion - 什么是蓝龙

java - TextView 未放置在屏幕的一半下方

coldfusion - Application.cfc 函数中的变量是否需要作用域?

jakarta-ee - 带有 Dragon(DNS) API 的语音到文本 java 应用程序