0

我正在尝试从纽约时报加载这些 RSS 提要:

当我使用以下代码行时,一切正常,没有错误。

     <a href="#XMLContent.rss.channel.item[idx].link.xmlText#">
        #XMLContent.rss.channel.i‌​tem[idx].title.xmlText#
     </a> 

但是当我真正点击链接时,网址并没有出现。我查看<cfdump>并看到对于这些提要,URL 保存在IDrsslink字段中。当我拉提要时,使用以下之一:

    <a href="#XMLContent.rss.channel.item[idx].id.xmlText#">
         #XMLContent.rss.channel.ite‌m[idx].title.xmlText#
    </a>
    <a href="#XMLContent.rss.channel.item[idx].rsslink.xmlText#">
        #XMLContent.rss.channe‌l.item[idx].title.xmlText#
    </a> 

我收到以下错误之一:

RSSLINK.XMLTEXT 元素在类型为coldfusion.xml.XmlNodeMap 的Java 对象中未定义,引用为“”

RSSLINK.XMLTEXT 元素在类型为coldfusion.xml.XmlNodeMap 的Java 对象中未定义,引用为“”

有谁知道如何摆脱这个错误?我用谷歌搜索但无济于事。

4

1 回答 1

2

我不确定你从哪里得到“ID”和“rsslink”。据我所知,“链接”网址存储在名为“href”的属性中。尝试使用 XmlAttributes:

#XMLContent.rss.channel.item[idx].link.XmlAttributes['href']#

更新:

我在 CF8 下进行了一些测试,并且使用该属性效果很好(见下文)。请注意,您没有包含用于解析提要的代码,所以我猜您正在cffhtpxmlParse.

<cfhttp url="http://rss.nytimes.com/services/xml/rss/nyt/Politics.xml" result="rssXML">
<cfset XMLContent = xmlParse(rssXML.fileContent)>

<cfloop from="1" to="#arrayLen(XMLContent.rss.channel.item)#" index="idx">
    <cfset itemNode = XMLContent.rss.channel.item[idx]>
    <cfoutput>
        <a href="#itemNode.link.XmlAttributes['href']#">
            #itemNode.title.xmlText#
        </a><br />
    </cfoutput>
</cfloop>

注意:业务提要上的 xml 结构似乎有所不同。一些节点将 url 存储在href属性中,其他节点存储在link.xmlText. XMLAttributes 是一个结构。因此,您始终可以在使用之前使用 structKeyExists 函数来验证 href 属性是否存在。如果没有找到,则执行其他操作。

    <cfif structKeyExists(itemNode.link.XmlAttributes, "href")>
        attributes exists. go ahead and use it
    <cfelse>
        not found. do something else ...
    </cfif>
于 2013-05-08T05:08:27.577 回答