Adobe ColdFusion 8

cffeed

描述

读取或者创建一个RSS或者Atom聚合节点。这个标签可以读 0.90,0.91, 0.92, 0.93, 0.94, 1.0,版本的RSS和0.3 or 1.0版本的Atom。它可以创建2.0版本的RSS或Atom 1.0节点。

语法

create
   必选 
    <cffeed
    action = "create"
    name = "#结构变量#"
        更多如下:
    outputFile = "路径"
    xmlVar = "变量名"
    可选 
    overwrite = "no|yes">

或者

    必选 
    <cffeed
    action = "create"
    properties = "#元数据结构变量#"
    query = "#选项/整个query名#"
        更多如下:
    outputFile = "路径"
    xmlVar = "变量名"
    可选
    columnMap = "mapping 结构"
    overwrite = "no|yes">

read
    必选 
    <cffeed
    source = "源节点"
        更多如下:
    name = "结构变量"
    properties = "元数据结构变量"
    query = "选项/整个query名"
    outputFile = "路径"
    xmlVar = "变量名"
    可选 
    action = "read"
    enclosureDir = "路径"
    ignoreEnclosureError = "no|yes"
    overwrite = "no|yes"
    overwriteEnclosure = "no|yes"
    proxyServer = "IP地址或者服务器主机域名"
    proxyPassword = "密码或者代理主机"
    proxyPort = "端口或者代理主机"
    proxyUser = "用户名或者代理主机"
    timeout = "所接受的超时时间"
    userAgent = "HTTP 用户身份识别">

注: 你可以在attributeCollection 中指定这个标签的属性,作为一个结构的value,在attributeCollection 中指定结构的名称,并使用这个标签的属性名称作为这个结构的Keys.

属性

属性

必选/可选

默认

描述

action

可选

read

take的动作,以下的值之一:

  • 创建:创建一个RSS 2.0 或 Atom 1.0 节点 XML 文件,把它保存在一个变量里,写到一个文件里,或者双管齐下。
  • 读取: 从一个URL或者一个XML文件传递一个RSS 或 Atom 节点,并把它保存在一个结构或者是query里。 你还可以在一个单独的结构里取到节点元数据。

columnMap

可选

 

只适用于query属性的创建动作。

一个结构,它指定了对象的栏目名字里的 mapping ,该对象用query属性和ColdFusion节点格式的栏目来指定。请看 Query object rules

每一个域的关键字都必须是一个栏目的名字。 (请看 Query object rules 的表格)域的值必须是query对象相对应的栏目名, 该query对象是用来作创建动作的输入的。

enclosureDir

可选

 

只适用于读取动作.

目录的路径,该目录可以保存任意的附件在被阅读的节点里使用。该路径可以是CFML文件的绝对路径或相对路径。

如果目录不存在,ColdFusion就会生成一个错误。如果你忽略了该属性,ColdFusion就不会保存该附件。为了指定这个包含了当前页面的目录,把该属性设置为 "." 。

ignoreEnclosureError

可选

no

如果该属性是yes,ColdFusion就试图保存所有的附件。如果它在写一个附件的时候发生了一个错误,它就会继续下载其他的附件并把错误信息写在服务器日志上。

如果这个属性是no,当ColdFusion在下载附件发生一个错误的时候,它就会停止下载所有的附件并提示一个错误。

注: 如果指定的附件是网络服务器无法下载的文件类型,附件就会发生错误。

name

见注释

 

一个包含了完成的节点数据的结构:

  • 读取动作的输出
  • 要创建节点的输入定义。

当你指定了 创建动作的命名属性的时候,你必须在井字号里 (#)关闭它。

更多信息,请看 Name and properties structure rules.

outputFile

见注释

 

文件的路径,在该文件里以XML的文本写节点

路径可以是通往CFML文件的绝对路径和相对路径。

overwrite

可选

no

如果XML节点文件已经存在,是否改写XML节点文件,如果你没有把该属性设置成 yes,并且cffeed标签试图去写已经存在的文件, ColdFusion就会产生一个错误。

overwriteEnclosure

可选

no

只适用于读取的动作。

如果附件目录已经存在,是否在里面改写文件。如果你没有把该属性设置成yes,并且cffeed标签试图去写一个已经存在的文件,ColdFusion就会产生一个错误。

properties

见注释

 

一个结构,它包含了节点元数据,和关于整个节点的信息。它可以包含以下内容:

  • 读取动作的输出
  • 一个创建动作的输入

功能和合并的query属性提供了完整的节点信息。

当你为一个创建动作指定了功能属性的时候,你必须把它放在井字号中 (#)。

更多信息,请看Name and properties structure rules

proxyPassword

可选

 

代理服务器要求的密码。

proxyPort

可选

80

服务器上连接的端口

proxyServer

可选

 

代理服务器所要发送给的主机名和IP地址。

proxyUser

可选

 

提供给代理服务器的的用户名。

query

见注释

 

在节点里包含了Atomitem元素或RSSitem元素的query对象。可以包含以下内容:

  • 读取动作的输出。
  • 创建动作的输入。

功能和合并的query属性提供了完整的节点信息。

当你为一个创建动作指定了功能属性的时候,你必须把它放在井字号中 (#)。

更多信息,请看 Query object rules

source

必选

 

只适用于读取动作。

节点的URL或通往包含了节点内容的XML 文件的路径。路径可以是通往CFML文件绝对路径,或者相对路径。

timeout

可选

请求响应超时

等待节点来源回应的时间秒数。如果该值是零,说明请求没有时间。

默认的情况下,ColdFusion Server Settings > Settings page可以设置请求超时时间

userAgent

可选

Cold
Fusion

在 HTTP客户端变量请求头域里输入的文本。用来确认客户端软件的请求。

xmlVar

见注释

 

一个变量用来保存XML文本格式的读取或者创建的节点。

用途

设置和取得节点信息

cffeed标签让你可以用很多种多边的方式指定或者保存节点数据。

当你创建一个节点的时候

  • 你可以用以下的方式指定节点数据:
    • 把所有的元数据和entry元素点或者item元素数据都放在一个单独的结构里,该结构是用命名属性来指定的。
    • 把所有的元数据放在一个用功能属性指定的结构里,entry元素点或者item元素排行罗列在一个 query 对象里,该 query 对象是用 query 属性指定的。
  • 你可以选择以下的方法或者同时使用以下的方法来保存结果的节点XML:
    • 一个用OutputFile属性指定的文件。cffeed标签用UTF-8 encoding的方式保存了数据。
    • 一个用 xmlVar 属性指定的变量。

当你读取一个节点的时候

你可以用以下表单的任意组合方法来保存节点数据:

  • 保存所有的entry元素或item元素数据和元数据在一个单独的结构里,该结构由命名属性来指定。
  • 把所有的entry元素处或item元素排行罗列在一个query对象里,该query对象由query属性指定。
  • 把所有的元数据保存在一个结构里,该结构由功能属性指定。
  • 把节点 XML 写入文件,该文件由OutputFile属性指定,cffeed标签把 数据以UTF-8 编码的格式保存。
  • 把节点 XML保存在一个 ColdFusion XML 变量里,该变量由xmlVar属性指定。

当你保存节 数据的时候,你不用同时保存和entry元素或item元素数据。你只可以指定 功能 属性,或只可以指定query 属性。

Name and properties structure rules命名和功能结构规则

命名和功能属性必须遵循以下规则。更多指定元数据entry元素的请求信息,请看Representing feed metadata.:

  • 所有的结构关键字名都必须和对应的节点元素名相同,例外的是版本域和编码域。同样的, Dublin Core 和 Apple® iTunes extension 元素的关键字名也相应地以DC_ and ITUNES_ 作为开头。
  • 功能结构域和命名结构里的元数据域是相同的。
  • 当你读取一个 节点的时候, 只包含这些元素和属性值的结构保存在节点里。更多创建动作请求的信息,请看 Creating feeds
  • 如果节点包含了多个相同类型的元素(比如说entry元素, item元素, 或link元素,命名属性和功能属性包含了一个单独的entry元素用来保存所有元素的数据。该结构的entry元素包含以下的格式:
    • 关键字是元素名(比如说: item元素)
    • 值是一个结构的数组。
    • 每一个数组里的结构都对应一个元素。

    就算是只有一个单独的元素,ColdFusion还是用了一个数组。如果一个 Atom 节点只有一个 link 元素, 比如说,你必须使用以下的格式来指定在命名属性结构的元素:

    structureName.link[1]

    比如说,要在一个 Atom 1.0 节点里指定一个link 元数据entry元素,你可以使用以下的代码:

    <cfset meta.link = arrayNew(1)>
    <cfset meta.link[1] = structNew()>
    <cfset meta.link[1].href = "http://www.myCo,com">
    

  • 如果一个元素有多个属性,或者至少有一个属性一个值,那么元素就代表了一个结构,即使是该元素只指定了一个属性或者一个值。例如:一个Atom节点里的summary元素的第三个entry元素的值的写法应按照如下格式:
  • structureName.entry[3].summary.value.

  • cffeed 标签读取一个 节点的时候,它会报告数据如下:

    Atom: W3C date format, 比如2006-07-11T18:19:00Z.

    RSS: in RFC 822 Format, 比如Thu, 05 Oct 2006 18:19:00 GMT.

  • cffeed标签创建一个节点的时候,你可以使用 W3C 或 RFC 822 格式作为 节点 类型。你也可以使用任何ColdFusion可以接受的数据标准或者日期/时间格式。

Query object rules Query对象规则

query属性指定的query 对象必须遵循以下规则:

  • query对象格式支持多个节点格式, 很多 节点没有包括所有的选项节点属性或者元素。
    • 当你读取一个节点的时候,返回的query对象包含了所有标准的RSS和Atom域的entry元素,甚至是不被支持的节点类型的域。所有没有被节点格式使用的栏目,或者所有没有使用在指定节点的栏目,都包含了空的字符串或是未定义的值。
    • 当你读取一个节点的时候,如果节点包含了任何的iTunes extension 元素,那么query对象就包含了所有的iTunes扩展域,并且如果 节点包含了任何的Dublin Core extension 元素.,query对象包含了所有的Dublin Core extension 元素 域。另外, query 的结果并没有包含任何的 extension 元素域。
    • 当你创建了一个节点,你定义的 query只请求那些包含了你的节点的数据的栏目;你可以忽略没有使用的栏目。
  • 如果一个节点entry元素或item元素有多个相同名字的子元素,query栏目代表的元素值是一个用逗号隔开的清单。RSS 2.0 items 可以有多个类别元素。Atom 1.0 entries 可以有多个类别、作者、contributorlink 元素。 Dublin Core extensions 允许所有多个不同的元素类型。
  • 很多可以有多个实例的 entry 或 item元素有多个属性,并不是所有的任意特殊的元素实例都是请求元素。 如果一个entry 或 item有一个元素的多个实例,所有的这些元素都忽略属性,ColdFusion在一个空间里用清单罗列代表这些被忽略的属性。在XML,和一个Atom entry,举例说, 都可能包含三个作者元素,如下:
    <author>
        <person>Anthony</person>
        <uri>http://www.MyCo.com</uri>
        <email>Tony@MyCo.com</email>
    </author>
    <author>
        <person>Beverly</person>
    </author>
    <author>
        <person>Cathy</person>
        <email>cathy@MyCo.com</email>
    </author>
    

ColdFusion query 代表了以下这些栏目:

AUTHOR_PERSON

AUTHOR_URI

AUTHOR_EMAIL

Anthony,Beverly,Cathy

http://www.MyCo.com, ,

Tony@MyCo.com, ,cathy@MyCo.com

下面的这些表格罗列了被query属性指定的标准query对象的栏目。如果一个 RSS 节点 包含了 Dublin Core extensions 或 iTunes extensions, query就包含了附加的栏目。更多这些 fields的信息,请看 Dublin Core ExtensionsApple iTunes Extensions

Column

Atom entry

RSS item

AUTHOREMAIL

author元素email属性

author item

AUTHORNAME

author元素name属性

不能使用

AUTHORURI

author元素uri属性

不能使用

CATEGORYLABEL

category元素lable属性

category item值

CATEGORYSCHEME

category元素scheme属性

category item域属性

CATEGORYTERM

category元素term属性

不能使用

COMMENTS

不能使用

comments item值

CONTENT

content 元素值

description item值

CONTENTMODE

content 元素mode属性 (只适用于Atom 0.3 )

不能使用

CONTENTSRC

content 元素src属性

不能使用

CONTENTTYPE

content 元素type属性

不能使用

CONTRIBUTOREMAIL

contributor元素email属性

不能使用

CONTRIBUTORNAME

contributor元素命名属性

不能使用

CONTRIBUTORURI

contributor元素uri属性

不能使用

CREATEDDATE

created 元素值(只适用于Atom 0.3 )

不能使用

EXPIRATONDATE

不能使用

expirationDate item 值 (RSS 0.93 only)

ID

id元素值

guid item 值

IDPERMALINK

不能使用

guid item ispermalink 属性

LINKHREF

link 元素href属性。

enclosure item url 属性

LINKHREFLANG

link 元素hreflang属性。

不能使用

LINKLENGTH

link 元素length属性。

enclosure item length 属性

LINKREL

link 元素rel 属性。

不能使用

LINKTITLE

link 元素 title属性。

不能使用

LINKTYPE

link 元素type属性。

enclosure item type 属性

PUBLISHEDDATE

published 元素值(Atom 0.3存疑)

pubDate item 值

RIGHTS

rights 元素值 (Atom 0.3获得版权)

不能使用

RSSLINK

不能使用

link item 值

SOURCE

不能使用

source item 值

SOURCEURL

不能使用

source item url 属性

SUMMARY

summary 元素值

不能使用

SUMMARYMODE

summary 元素mode属性 (只适用于Atom 0.3 )。

不能使用

SUMMARYSRC

Blank for all well-formed Atom 节点s. Contains data only if an Atom 1.0 节点 uses a content element format for the summary element。

不能使用

SUMMARYTYPE

summary 元素 type属性。

不能使用

TITLE

title 元素值

title item 值

TITLETYPE

title 元素type属性。

不能使用

UPDATEDDATE

updated元素值(在 Atom 0.3更新)

不能使用

URI

不能使用

RSS 1.0 link item rdf:about 属性

XMLBASE

content 元素 xml:base 属性。

不能使用

Representing 节点元数据

当你创建一个节点的时候,命名属性和功能属性可以代表所有标准的 RSS 2 或 Atom 1 节点的 元数据,格式在Name and properties structure rules 章节里有详细描述。同样的,当你读取一个节点的时候,结构代表了所有接收到的元数据.。下面的规则用来约束在命名属性和功能结构里指定节点元数据:

  • version 域在表单 format_versionNumber理定义或者指定了节点版本。对于创建动作来说,你必须指定atom_1.0rss_2.0。当你读取 一个 RSS 0.91 节点的时候, version 域的值是 rss_0.91U, 而不是 rss_0.91
  • 节点Extension 域定义了节点是否包括 iTunes 或 Dublin Core extension 文本。有效变量是 itunesDublinCore。当你用 iTunes extensions创建一个节点的时候,你不必指定域;ColdFusion自动定义你已经指定的extension域。(你不能用 Dublin Core extensions创建一个节点。)
  • 对于读取的动作,一个编码域定义了 XML编码属性,比如说 iso-8859-1。不要为一个创建动作指定一个编码域 。目前, ColdFusion 以UTF-8的编码格式产生所有的 节点,并且忽略所有你指定的编码值。
  • 对于 RSS 节点s, skiphours 域包含了一个用逗号隔开的清单,该清单罗列了0-23 的24个数字,指定了当聚合器不能读取节点的时候,是一天中的哪个小时。如果这个小时开始在午夜,那么就是数字0。你的应用程序可以使用这个域来决定什么时候开始读取 节点。
  • 对于 RSS 节点s, skipdays field包含了一个用逗号隔开的清单,清单里包含了一周中的七天的名字,指定了是一周中的哪一天聚合器没有读取节点。有效的名字是Monday, Tuesday, Wednesday, Thursday, Friday, SaturdaySunday。你的应用程序可以使用该field来决定什么时候开始读取节点。

Dublin Core Extensions

Dublin Core extension 元素提供了关于节点或者一个item的附加元数据 。你可以使用 cffeed标签来读取节点,这个节点包含了符合 作为元数据(channel元素) 或者 item 元素的 Dublin Core Metadata Element Set specification。更多关于 Dublin Core extension元素的细节信息,请看 Dublin Core Metadata Element Set specification.。这时候,这个主题就已经写好了,这个指定在http://dublincore.org/documents/dces/是可行的。

ColdFusion 支持 Dublin Core extensions 的同时有以下限制:

  • 你不能创建一个包含着这些元素的节点。.
  • 你不能取得包含在一个最高级别 (元数据)图像元素的Dublin Core extension元素。ColdFusion 忽略了这些元素。
  • ColdFusion 只支持 Dublin Core Metadata Element Set。它不支持附加的 Dublin Core Metadata Initiative 元素和 元素修饰。

当 节点 items包含了 Dublin Core extension的时候, 用一个query属性指定的 query 包含了所有在下面的表格里罗列的栏目。如果 节点 没有包含任何 Dublin Core extension 元素, query 就不会包含栏目。 除了 DC_SUBJECT_TAXONOMURIDC_SUBJECT_VALUE 栏目, 每一个栏目名(不包括 DC_ prefix) 都直接对应一个 Dublin Core extension 元素名。

栏目

描述

DC_CONTRIBUTOR

负责组织资源的人员或者组织。

DC_COVERAGE

在资源里的内容的范围。

DC_CREATOR

负责创建资源的人员和组织。

DC_DATE

与资源相关的日期或者日期时间。

DC_DESCRIPTION

资源内容的摘要

DC_FORMAT

文件格式,物理介质,或者尺寸的资源。

DC_IDENTIFIER

一个字符串,可以用来快速定义资源。

DC_LANGUAGE

资源所用的语言。

DC_PUBLISHER

制作可行资源的人员或组织。

DC_RELATION

特指相关资源的定义者。

DC_RIGHT

关于资源的归属权限的信息。

DC_SOURCE

从资源中导出的参考资料。

DC_SUBJECT_TAXONOMYURI

Dublin Core subject元素的 taxonomy URI属性。

DC_SUBJECT_VALUE

Dublin Core subject元素的值,资源顶部的一个字符串。

DC_TITLE

资源使用的名字

DC_TYPE

性质或类型的资源。

当你从一个包含了Dublin Core 元素的结构的节点里取得数据的时候, 元素的名字是定义在query栏目清单的顶部的,并且它带着代表性的Dublin Core subject元素的例外。结构的格式把主题元素代表成一个dc_subject entry,该dc_subject entry包含了一个结构的数组。数组里的结构有带有名字值的关键字,是针对元素值和taxononmyURI,以及taxonomyURI 属性来说的。

Apple iTunes Extensions

你可以使用cffeed标签来创建或者读取包含了定义在Apple iTunes RSS podcast 指定里的元素的节点。关于 iTunes extension 格式的更多细节信息,请看Apple iTunes RSS 指定。这次主题已经写出,指定在http://www.apple.com/itunes/store/podcaststechspecs.html也是可用的。

你可以创建一个只有 iTunes RSS extensions这样一个子节点。当你读取节点的时候,ColdFusion会忽略所有不在支持子节点的iTunes extension 元素。

下面的表格罗列出结构entries或者支持的元素的query栏目名。(这些名字包含了iTunes extension元素名后面的 ITUNES_ prefix ) 。表格也显示了在元数据里使用的元素,有些元素在单独的item里使用,有些元素两种情况都能使用。

元素

如何使用

描述

ITUNES_AUTHOR

两者都可以使用

艺术家名

ITUNES_BLOCK

两者都可以使用

一个值为yes的请求,目的是防止podcast 或 item (episode)出现。

当ColdFusion读取一个节点的时候,你的程序可以定义这个域的值并运行任何适当的的操作。

ITUNES_DURATION

Item

item 的秒数长,或者是以 HH:MM:SS为格式的item

ITUNES_EXPLICIT

两者都可以使用

一个字符串,说明了单个的item 或多个item是否包含明确的资料。有效值是yes,no或者clear。

ITUNES_KEYWORDS

两者都可以使用

一个用逗号隔开的清单,清单罗列了当你在 iTunes music store搜索的时候,使用的文字或词语。

ITUNES_SUBTITLE

两者都可以使用

短的描述文字,通常只用几个字描述

ITUNES_SUMMARY

两者都可以使用

一个比较长的秒数(最多是4000字)

你也可以在性能结构中使用下面的channel 元素。

元素

描述

itunes_category

一个结构,指定了 iTunes Music Store类别,该结构有以下两个域

  • category
  • subcategory

注意:这些元素名没有itunes_ prefix.

itunes_image

podcast.的artwork URL

itunes_owner

一个结构,包含了用于沟通的podcast的拥有者的关联信息。结构有以下两个 fields:

  • itunes_email
  • itunes_mail

创建 节点s

当你创建一个 节点的时候,你可以在一个命名结构里或则和在一个 query 对象和一个 properties 结构的组合里指定节点的内容。 cffeed 标签产生了节点的XML ,并把它保存在用xmlVar属性指定的变量里。文件是用outputFile属性来指定的,或者两者都可以。

要创建一个 RSS 2.0 节点 ,你必须在一个命名结构里或者在一个性能结构里指定以下的元数据域。所有其他的 RSS2.0 元数据域, 和所有的 item 域, 都是可选的。

  • title
  • link
  • description
  • version (必须是 "rss_2.0")

cffeed标签不会强行给在它创建的 Atom 节点规定任何规则 。你有责任确认节点是否有效。

在大多数情况下,一个数据库表格使用的栏目名都区别于你必须用来创建节点的栏目名。这样的话,你必须使用columnmap 属性来绘制输入的query栏目名给已经请求的栏目名。该属性是一个结构,结构的关键字是用cffeed标签请求的栏目名,而结构的值对应输入的query栏目。下面的范例用cfartgallery 数据源的顺序表格创建了一个节点。它 绘制了 ORDERDATE 栏目给query publisheddate 栏目, 也绘制了 ADDRESS 栏目 给 content 栏目,等等。 范例的代码接着显示了产生的query XML,用来展示结果:

<!--- Get the 节点 data as a query from the orders table. --->
<cfquery name="getOrders" datasource="cfartgallery"> 
    SELECT * FROM orders 
</cfquery>

<!--- Map the orders column names to the 节点 query column names. --->
<cfset columnMapStruct = StructNew()>
<cfset columnMapStruct.publisheddate = "ORDERDATE"> 
<cfset columnMapStruct.content = "ADDRESS"> 
<cfset columnMapStruct.title = "CUSTOMERFIRSTNAME"> 
<cfset columnMapStruct.rsslink = "ORDERID">

<!--- Set the 节点 metadata. --->
<cfset meta.title = "Art Orders">
<cfset meta.link = "http://节点link">
<cfset meta.description = "Orders at the art gallery"> 
<cfset meta.version = "rss_2.0">

<!--- Create the 节点. --->
<cffeed action="create" 
    query="#getOrders#" 
    properties="#meta#"
    columnMap="#columnMapStruct#" 
    xmlvar="rssXML">

<cfdump var="#XMLParse(rssXML)#">

读取 节点s

cffeed标签没有验证它读取的节点。它可以读取有效的或则和是零散的格式化节点, 但是忽略论一些或者所有的无效内容。比如说,如果你在 Atom 节点 (它作废了这个节点), 给了多于一个的对的元素, cffeed 标签就会忽略第一个之后的元素,并且不产生一个错误提示。

节点里的日期和时间是以 W3C 或 RFC 822 的格式来读取的。 ColdFusion也可以读取通常在the iTunes music store里使用的格式的 iTunes extension 日期。

范例

下面的范例创建了一个 RSS 节点。你必须输入 节点 title, link, 和 description 元素。你还必须给一个item输入title, link 和 description 域。第二个 item是可选的。应用程序在createRSSOutput.xml文件里保存节点,该文件位于节点Test 子目录 ,而根目录包含了 CFML 页面。

<!--- Generate the 节点 when the user submits a filled in form. --->
<cfif isDefined("Form.Submit")>
    <cfscript>

        // Create the 节点 data structure and add the metadata.
        myStruct = StructNew();
        mystruct.link = form.link;
        myStruct.title = form.title;
        mystruct.description = form.description;
        mystruct.pubDate = Now();
        mystruct.version = "rss_2.0";

        /* Add the 节点 items. A more sophisticated application would use dynamic variables
            and support varying numbers of items. */
        myStruct.item = ArrayNew(1);
        myStruct.item[1] = StructNew();
        myStruct.item[1].description = StructNew();
        myStruct.item[1].description.value = form.item1text;
        myStruct.item[1].link = form.item1link;
        myStruct.item[1].pubDate = Now();
        myStruct.item[1].title = form.item1title;
        myStruct.item[2] = StructNew();
        myStruct.item[2].description = StructNew();
        myStruct.item[2].description.value = form.item2text;
        myStruct.item[2].link = form.item2link;
        myStruct.item[2].pubDate = Now();
        myStruct.item[2].title = form.item2title;

    </cfscript>

    <!--- Generate the 节点 and save it to a file and variable. --->
    <cffeed action = "create"
        name = "#myStruct#"
        outputFile = "节点Test/createRSSOutput.xml" 
        overwrite = "yes"
        xmlVar = "myXML">

</cfif>

<!--- The user input form. --->
<cfform format="xml" preservedata="yes" style="width:500" height="700">
    <cfformitem type = "text"> Enter The 节点 Metadata</cfformitem>
    <cfinput type = "text" label = "title" name = "title" 
        style = "width:435" required = "yes"> <br />
    <cfinput type = "text" label = "link" name = "link" 
        style = "width:435" required = "yes" validate = "url"> <br />
    <cftextarea name = "description" 
        style = "width:435; height:70" required = "yes" />

    <cfformitem type = "text"> Enter Item 1</cfformitem>
    <cfinput type="text" label="title" name="item1title" 
        style="width:435" required="yes"> <br />
    <cfinput type="text" label="link" name="item1link" 
        style="width:435" required="yes" validate="url"> <br />
    <cftextarea name = "item1text" 
        style = "width:435; height:70" required = "yes" /> <br />

    <cfformitem type = "text"> Enter Item 2</cfformitem>
    <cfinput type = "text" label = "title" name = "item2title" style = "width:435"> <br />
    <cfinput type = "text" label = "link" name = "item2link" style = "width:435" 
        validate = "url"> <br />
    <cftextarea name = "item2text" style = "width:435; height:70" /> <br />
    
    <cfinput type = "Submit" name = "submit" value = "Submit" >
</cfform> 

下面程序是一个简单的节点读取器,该读取器 handles RSS 和 Atom 节点s.。它显示了节点 title; 为每一个item 或 entry, 还把 title作为一个链接来展示,同时也展示了 published date 和 the item 或entry 内容。要使用这个范例来读取用第一个程序创建的节点,输入程序创建的文件的 URL,比如说:http://localhost:8500/cffeed/节点Test/createRSSOutput.xml.

<!--- Process the 节点 data if the user submitted the form --->
<cfif isDefined("Form.Submit")>
    <cffeed source = "#theURL#" 
        properties = "myProps" 
        query = "myQuery">

    <!--- Display the 节点 output. 
            Use conditional logic for to handle different 节点 formats. --->
    <cfoutput>
        <h2>#myProps.title#</h2>
    </cfoutput>    
    <cfoutput query = "myQuery">
        <cfif myProps.version IS "atom_1.0">
            <h3><a href = "#linkhref#">#title#</a></h3>
            <p><b>Published:</b> #DateFormat(publisheddate)#</p>
        <cfelse>
            <h3><a href = "#rsslink#">#title#</a></h3>
            <p><b>Published:</b> #publisheddate#</p>
        </cfif>
        <p>#content#</p>
    </cfoutput>
</cfif>

<!--- The form for specifying the 节点 URL or file --->
<cfform name = "Set节点" preserveData = "yes">
        Enter 节点 URL: 
        <cfinput type = "text" size = "60" name = "theURL"><br><br>
        <cfinput type = "Submit" name = "submit" value = "Submit">
</cfform>