|
cffeed
DescriptionReads
or creates an RSS or Atom syndication feed. This tag can read RSS
versions 0.90, 0.91, 0.92, 0.93, 0.94, 1.0, and 2.0, and Atom 0.3
or 1.0. It can create RSS 2.0 or Atom 1.0 feeds.
Syntaxcreate
required
<cffeed
action = "create"
name = "#structure#"
One or both of the following: outputFile = "path"
xmlVar = "variable name"
optional
overwrite = "no|yes">
escapeChars = "true|false">
OR
required
<cffeed
action = "create"
properties = "#metadata structure#"
query = "#items/entries query name#"
One or both of the following: outputFile = "path"
xmlVar = "variable name"
optional
columnMap = "mapping structure"
overwrite = "no|yes">
read
required
<cffeed
source = "feed source"
One or more of the following: name = "structure"
properties = "metadata structure"
query = "items/entries query"
outputFile = "path"
xmlVar = "variable name"
optional
action = "read"
enclosureDir = "path"
ignoreEnclosureError = "no|yes"
overwrite = "no|yes"
overwriteEnclosure = "no|yes"
proxyServer = "IP address or server name for proxy host"
proxyPassword = "password for the proxy host"
proxyPort = "port of the proxy host"
proxyUser = "user name for the proxy host"
timeout = "request time-out in seconds"
userAgent = "HTTP user agent identifier">
Note: You can specify this tag’s attributes in an attributeCollection attribute
whose value is a structure. Specify the structure name in the attributeCollection attribute
and use the tag’s attribute names as structure keys.
HistoryColdFusion
8: Added this tag.
Attributes
Attribute
|
Req/Opt
|
Default
|
Description
|
action
|
Optional
|
read
|
The action to take, one of the following
values:
create: creates an RSS
2.0 or Atom 1.0 feed XML document and saves it in a variable, writes
it to a file, or both.
read: parses an RSS or Atom feed from a
URL or an XML file and saves it in a structure or query. You can
also get feed metadata in a separate structure.
|
columnMap
|
Optional
|
|
Used only for the create action
with a query attribute.
A structure that
specifies a mapping between the names of the columns in the object
specified by the query attribute and the columns
of the ColdFusion feed format (see the section Query object rules.
The
key for each field must be a column name (see the table in the Query
object rules section). The value of the field must be the name of
the corresponding column in the query object used as input to the create action.
|
enclosureDir
|
Optional
|
|
Used only for the read action.
Path
to the directory in which to save any enclosures that are available
in the feed being read. The path can be absolute or relative to
the CFML file.
If the directory does not exist, ColdFusion
generates an error. If you omit this attribute, ColdFusion does
not save enclosures. To specify the directory that contains the
current page, set this attribute to “ .” (period).
|
escapeChar
|
Optional
|
false
|
Used only for the create action.
If
this attribute is true, escapes/replaces all the
invalid characters as per W3C specification.
Note: Japanese
characters that are not part of UTF-8 encoding are replaced. Non-UTF-8
Japanese characters remain in the feed as they are.
If this
attribute is false, does not escape invalid characters
and tries to generate feed. If JDOM fails to write the file with
these invalid characters, the error message “Invalid Character in
Input” is displayed.
|
ignoreEnclosureError
|
Optional
|
no
|
If this attribute is yes,
ColdFusion attempts to save all enclosures. If it encounters an
error downloading one enclosure, it continues downloading other
enclosures and writes the error information in the server log.
If
this attribute is no, when ColdFusion encounters
an error downloading an enclosure, it stops downloading all enclosures
and generates an error.
Note: Enclosure errors can
occur if the specified enclosure is of a type that the web server
does not allow to be downloaded.
|
name
|
See Note
|
|
A structure that contains complete feed
data:
When
you specify the name attribute for a create action,
enclose it in number signs (#).
For more information, see
Name and properties structure rules section.
|
outputFile
|
See Note
|
|
Path of the file in which to write the feed
as XML text.
The path can be absolute, or relative to the
CFML file.
|
overwrite
|
Optional
|
no
|
Whether to overwrite the XML feed file if
it exists. If you do not set this attribute to yes and
the cffeed tag tries to write to a file that exists,
ColdFusion generates an error.
|
overwriteEnclosure
|
Optional
|
no
|
Used only for the read action.
Whether
to overwrite files in the enclosure directory if they exist. If
you do not set this attribute to yes and the cffeed tag
tries to write to a file that exists, ColdFusion generates an error.
|
properties
|
See Note
|
|
A structure that contains the feed metadata,
the information about the entire feed. Can contain either of the
following:
The properties and query attributes
combined provide complete feed information.
When you specify
the properties attribute for a create action,
enclose it in number signs (#).
For more information, see
Name and properties structure rules section.
|
proxyPassword
|
Optional
|
|
Password required by the proxy server.
|
proxyPort
|
Optional
|
80
|
The port to connect to on the proxy server.
|
proxyServer
|
Optional
|
|
Host name or IP address of a proxy server
to which to send the request.
|
proxyUser
|
Optional
|
|
User name to provide to the proxy server.
|
query
|
See Note
|
|
A query object that contains the Atom entries
or RSS items in the feed. Can contain either of the following:
The properties and query attributes
combined provide complete feed information.
When you specify
the query attribute for a create action,
enclose it in number signs (#).
For more information, see
section Query object rules.
|
source
|
Required
|
|
Used only for the read action.
The
URL of the feed or the path to the XML file that contains the feed
contents. A path can be absolute, or relative to the CFML file.
|
timeout
|
Optional
|
Request time-out
|
The number of seconds to wait for a response
from the feed source. A value of 0 specifies that the request does
not time out.
By default, ColdFusion uses the request time-out
setting of the ColdFusion Administrator Server Settings > Settings
page.
|
userAgent
|
Optional
|
Cold
Fusion
|
Text to put in the HTTP User-Agent request
header field. Used to identify the request client software.
|
xmlVar
|
See Note
|
|
A variable in which to save the read or
created feed as XML text.
|
Specifying file and directory attributesUse the following syntax
to specify an in-memory file or directory. In-memory files are not
written to disk and speed processing of transient data.
ram:///filepath
A
filepath can include multiple directories, for example ram:///petStore/images/poodle.jpg.
Create the directories in the path before you specify the file.
For more information on using in-memory files, see Optimizing
transient files in the Developing ColdFusion Applications.
Setting and getting feed informationThe cffeed tag
lets you specify and save feed data in many, flexible ways.
UsageUse the
following syntax to specify an in-memory file, which is not written
to disk. In-memory files speed processing of transient data.
ram:///filepath
The
filepath can include directories, for example ram:///petStore/images/poodle.jpg.
Create the directories in the path before you specify the file.
For more information on using in-memory files, see Optimizing
transient files in the Developing ColdFusion Applications.
When you create a feed
When you read a feed
You
can save the feed data in any combination of the following forms:
By saving all entry or item data and metadata in a single
structure specified by the name attribute
By saving entries or items as rows in a query object specified
by the query attribute
By saving the metadata in a structure specified by the properties structure
By writing the feed XML in a file specified by the OutputFile attribute.
The cffeed tag saves the data in UTF-8 encoding.
By saving the feed XML in a ColdFusion XML variable specified
by the xmlVar attribute
When you
save feed data, you do not have to save both the metadata and the entry
or item data. You can specify only the properties attribute,
or only the query attribute.
Name and properties structure rulesThe name and properties structures
must conform to the following rules. For more information on requirements
for specific metadata entries, see the section Representing feed
metadata.
All structure key names must be identical
to the corresponding feed element names, with the exception of the version and encoding fields.
Also, the key names for Dublin Core and Apple® iTunes
extension elements start with DC_ and ITUNES_
respectively.
The properties structure fields are identical
to the metadata fields in the name structure.
When you read a feed, the structure contains only those elements
and attribute values that exist in the feed. For requirements for
the create action, see the section Creating feeds.
If the feed can have multiple elements of the same type (such
as entry, item, or link),
the name or property structure
has a single entry that contains the data for all of the elements.
The structure entry has the following format:
The
key is the element name (for example, item)
The value is an array of structures
Each structure in the array represents one element.
ColdFusion
uses an array even if there is only a single element. If an Atom
feed has only one link element, for example, you
must specify that element in a name attribute structure
by using the following format:
structureName.link[1]
For
example, to specify a link metadata entry in an
Atom 1.0 feed, you could use the following code:
<cfset meta.link = arrayNew(1)>
<cfset meta.link[1] = structNew()>
<cfset meta.link[1].href = "http://www.myCo,com">
If an element can have multiple attributes, or can have at
least one attribute and a value, the element is represented as a
structure, even if the element specifies only one attribute or only
a value.
If an element has one or more attributes and a value (body),
the value is in a field of the element structure named value.
For example, the text of the summary element for
the third entry in an Atom feed would go in a field whose
name has the following format:
structureName.entry[3].summary.value.
When the cffeed tag reads a feed, it reports
dates as follows:
Atom: W3C date format, such as 2006-07-11T18:19:00Z.
RSS:
in RFC 822 Format, such as Thu, 05 Oct 2006 18:19:00 GMT.
When the cffeed tag creates a feed, you
can use W3C or RFC 822 formats for both feed types. You can also
use any standard date or date/time format accepted by ColdFusion.
Query object rulesThe query object specified by the query attribute
conforms to the following rules:
The query object
format supports multiple feed formats, and many feeds do not include
all optional feed attributes or elements. As a result:
When you read a feed, the returned query object contains
entries for all standard RSS and Atom fields, even for fields that
are not supported by the feed type. Any columns that are not used
by the feed format, or are not used in that specific feed, contain
empty strings or undefined values.
When you read a feed, the query object contains all iTunes
extension fields if the feed contains any iTunes extension elements,
and the query object contains all Dublin Core extension fields if
the feed contains any Dublin Core extension elements. Otherwise,
the query results do not contain any of the extension fields.
When you create a feed, the query that you define requires
only those columns that contain data for your feed; you can omit
unused columns.
If a feed entry or item has multiple child elements with
the same name, the query column represents the element values as
a comma-delimited list. RSS 2.0 items can have multiple category elements.
Atom 1.0 entries can have multiple category, author, contributor,
and link elements. The Dublin Core extensions allow
all multiples of all element types.
Many entry or item elements that can have multiple instances
have multiple attributes, not all of which are required for any
particular element instance. If an entry or item has multiple instances
of an element, and any of those elements omit attributes, ColdFusion
represents the omitted attribute in the lists by a space. In XML,
an Atom entry, for example, might contain three author elements,
as follows:
<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>
The ColdFusion query represents
these columns as follows:
AUTHOR_PERSON
|
AUTHOR_URI
|
AUTHOR_EMAIL
|
Anthony,Beverly,Cathy
|
http://www.MyCo.com, ,
|
Tony@MyCo.com, ,cathy@MyCo.com
|
The following table lists the columns of
the standard query object specified by the query attribute.
If an RSS feed includes either Dublin Core extensions or iTunes
extensions, the query includes additional columns. For information
on these fields, see the sections Dublin Core Extensions and Apple
iTunes Extensions.
Column
|
Atom entry
|
RSS item
|
AUTHOREMAIL
|
author element email attribute
|
author item
|
AUTHORNAME
|
author element name attribute
|
Not used
|
AUTHORURI
|
author element uri attribute
|
Not used
|
CATEGORYLABEL
|
category element label attribute
|
category item value
|
CATEGORYSCHEME
|
category element scheme attribute
|
category item domain attribute
|
CATEGORYTERM
|
category element term attribute
|
Not used
|
COMMENTS
|
Not used
|
comments item value
|
CONTENT
|
content element value
|
description item value
|
CONTENTMODE
|
content element mode attribute
(Atom 0.3 only)
|
Not used
|
CONTENTSRC
|
content element src attribute
|
Not used
|
CONTENTTYPE
|
content element type attribute
|
Not used
|
CONTRIBUTOREMAIL
|
contributor element email attribute
|
Not used
|
CONTRIBUTORNAME
|
contributor element name attribute
|
Not used
|
CONTRIBUTORURI
|
contributor element uri attribute
|
Not used
|
CREATEDDATE
|
created element value (Atom
0.3 only)
|
Not used
|
EXPIRATONDATE
|
Not used
|
expirationDate item value
(RSS 0.93 only)
|
ID
|
id element value
|
guid item value
|
IDPERMALINK
|
Not used
|
guid item ispermalink attribute
|
LINKHREF
|
link element href attribute
|
enclosure item url attribute
|
LINKHREFLANG
|
link element hreflang attribute
|
Not used
|
LINKLENGTH
|
link element length attribute
|
enclosure item length attribute
|
LINKREL
|
link element rel attribute
|
Not used
|
LINKTITLE
|
link element title attribute
|
Not used
|
LINKTYPE
|
link element type attribute
|
enclosure item type attribute
|
PUBLISHEDDATE
|
published element value
(issued in Atom 0.3)
|
pubDate item value
|
RIGHTS
|
rights element value (copyright in
Atom 0.3)
|
Not used
|
RSSLINK
|
Not used
|
link item value
|
SOURCE
|
Not used
|
source item value
|
SOURCEURL
|
Not used
|
source item url attribute
|
SUMMARY
|
summary element value
|
Not used
|
SUMMARYMODE
|
summary element mode attribute
(Atom 0.3 only)
|
Not used
|
SUMMARYSRC
|
Blank for all well-formed Atom feeds. Contains
data only if an Atom 1.0 feed uses a content element format
for the summary element.
|
Not used
|
SUMMARYTYPE
|
summary element type attribute
|
Not used
|
TITLE
|
title element value
|
title item value
|
TITLETYPE
|
title element type attribute
|
Not used
|
UPDATEDDATE
|
updated element value (modified in
Atom 0.3)
|
Not used
|
URI
|
Not used
|
RSS 1.0 link item rdf:about attribute
|
XMLBASE
|
content element xml:base attribute
|
Not used
|
Representing feed metadataWhen you create a feed, the name and properties structures
can represent all standard metadata for RSS 2 or Atom 1 feeds, in
the format described in the Name and properties structure rules
section. Similarly, when you read a feed, the structures represent
all received metadata. The following rules apply to specific feed
metadata fields in the name and properties structures:
The version field identifies or specifies
the feed version in the form format_versionNumber.
For the create action, specify atom_1.0 or rss_2.0.
When you read an RSS 0.91 feed, the version field value is rss_0.91U,
not rss_0.91.
The feedExtension field identifies whether
the feed includes iTunes or Dublin Core extension content. Valid
values are itunes and DublinCore. You
do not have to specify this field when you create a feed with iTunes
extensions; ColdFusion automatically determines that you have specified
extension fields. (You cannot create a feed with Dublin Core extensions.)
For the read action, an encoding field
identifies the XML encoding attribute, such as iso-8859-1.
Do not specify an encoding field for a create action.
Currently, ColdFusion generates all feeds in UTF-8 format and ignores
any encoding value that you specify.
For RSS feeds, the skiphours field contains
a comma-delimited list of up to 24 numbers in the range 0–23, specifying
hours of the day when aggregators should not read the feed. The
hour beginning at midnight is hour zero. Your application can use
the field to decide when to read the feed.
For RSS feeds, the skipdays field contains
a comma-delimited list of up to seven day-name values, specifying
days of the week when aggregators must not read the feed. The valid
names are Monday, Tuesday, Wednesday, Thursday, Friday, Saturday and Sunday.
Your application can use the field to decide when to read the feed.
Dublin Core ExtensionsDublin Core extension elements provide
additional metadata about the feed or an item. You can use the cffeed tag
to read feeds that include elements that conform to the Dublin Core
Metadata Element Set specification as metadata (channel elements)
or as item elements. For detailed information Dublin Core extension
elements, see the Dublin Core Metadata Element Set specification.
At the time this topic was written, this specification was available
at http://dublincore.org/documents/dces/.
ColdFusion
support for Dublin Core extensions has the following limitations:
You cannot create feeds containing these elements.
You cannot get Dublin Core extension elements that are contained
in a top-level (metadata) image element. ColdFusion
ignores these elements.
ColdFusion supports only the Dublin Core Metadata Element
Set. It does not support the additional Dublin Core Metadata Initiative
elements and element refinements.
When feed items
include the Dublin Core extensions, the query specified by a query attribute
includes all of the columns listed in the following table. If the feed
does not include any Dublin Core extension elements, the query does
not include the columns. With the exception of the DC_SUBJECT_TAXONOMURI and DC_SUBJECT_VALUE columns,
each column name (without the DC_ prefix) corresponds
directly to a Dublin Core extension element name.
Column
|
Description
|
DC_CONTRIBUTOR
|
The people or organizations responsible
for contributing to the resource
|
DC_COVERAGE
|
The extent of the content in the resource
|
DC_CREATOR
|
The person or organization responsible for
creating this resource
|
DC_DATE
|
A date or date and time associated with
this resource
|
DC_DESCRIPTION
|
A summary of the resource contents
|
DC_FORMAT
|
The file format, physical medium, or dimensions
of the resource
|
DC_IDENTIFIER
|
A string that can be used to unambiguously
identify the resource
|
DC_LANGUAGE
|
The language in which the resource is written
|
DC_PUBLISHER
|
The person or organization responsible for
making the resource available.
|
DC_RELATION
|
The identifier of a related resource, typically.
|
DC_RIGHT
|
Information about the property rights for
the resource.
|
DC_SOURCE
|
A reference to the material from which this
resource was derived.
|
DC_SUBJECT_TAXONOMYURI
|
The taxonomyURI attribute
of the Dublin Core subject element
|
DC_SUBJECT_VALUE
|
The value of the Dublin Core subject element;
a string that defines the topic of the resource
|
DC_TITLE
|
A name to use for the resource
|
DC_TYPE
|
The nature or genre of the resource
|
When you get data for a feed that includes
Dublin Core elements as a structure, the element names are identical
to the query column names listed above, with the exception of the
representation of the Dublin Core subject element.
The structure format represents the subject element
as a dc_subject entry, which consists of an array
of structures. The structures in the array have keys with the names value,
for the element value, and taxononmyURI, for the taxonomyURI attribute.
Apple iTunes ExtensionsYou can use the cffeed tag
to create or read feeds that contain elements defined in the Apple
iTunes RSS podcast specification. For detailed information on iTunes
extension format, see the Apple iTunes RSS specification. At the
time this topic was written, this specification was available at http://www.apple.com/itunes/store/podcaststechspecs.html.
You
can create feeds with only a subset of the iTunes RSS extensions.
When you read a feed, ColdFusion ignores all iTunes extension elements
that are not in the supported subset.
The following table
lists the names of structure entries or query column names for the
supported elements. (These names consist of the ITUNES_
prefix followed by the iTunes extension element name.) The table
also indicates which elements are used in the metadata, which are
used in the individual items, and which can be used in both:
Element
|
Used in
|
Description
|
ITUNES_AUTHOR
|
Both
|
Artist name
|
ITUNES_BLOCK
|
Both
|
a value of yes requests
to prevent the podcast or item (episode) from appearing.
When
ColdFusion reads a feed your application must determine this field’s
value and take any appropriate action.
|
ITUNES_DURATION
|
Item
|
The length of the item in second, or in
HH:MM:SS format.
|
ITUNES_EXPLICIT
|
Both
|
A string indicating whether the item or
items contain explicit material. Valid values are yes, no,
and clean.
|
ITUNES_KEYWORDS
|
Both
|
A comma-delimited list of words or phrases
used when searching in the iTunes music store.
|
ITUNES_SUBTITLE
|
Both
|
Short description text, usually only a few
words.
|
ITUNES_SUMMARY
|
Both
|
A longer description (up to 4000 characters)/
|
You can also use the following channel
elements in the name or properties structures.
Element
|
Description
|
itunes_category
|
A structure that specifies the iTunes Music
Store category. The structure has two fields:
Notice that
these element names do not have the itunes_ prefix.
|
itunes_image
|
The URL of the artwork for the podcast.
|
itunes_owner
|
A structure that contains contact information
about the owner of the podcast for communication. The structure has
two fields:
|
Creating feedsWhen you create a feed, you specify the feed contents
in a name structure or in the combination of a query object
and a properties structure. The cffeed tag
generates the feed XML and saves in to the variable specified by
the xmlVar attribute, the file specified by the outputFile attribute,
or both.
To create an RSS 2.0 feed you must specify the following
metadata fields in a name structure or in a properties structure.
All other RSS2.0 metadata fields, and all item fields, are optional.
The cffeed tag
does not enforce any rules on the Atom feed structure that it creates.
You are responsible for ensuring that the feed is valid.
In
most cases, a database table uses column names that differ from
the column names you must use to create the feed. Therefore, use
the columnmap attribute to map the input query
column names to the required column names. The attribute is a structure
whose keys are the column names required by the cffeed tag
and whose values are the corresponding input query columns.
Note: Always capitalize the input query column names
irrespective of whether the database column names are capitalized
or not.
The following example creates a feed using the
cfartgallery data source’s orders table. It maps the orders table
ORDERDATE column to the query publisheddate column, the ADDRESS
column to the content column, and so on. The sample code then displays
the generated query XML to show the results.
<!--- Get the feed data as a query from the orders table. --->
<cfquery name="getOrders" datasource="cfartgallery">
SELECT * FROM orders
</cfquery>
<!--- Map the orders column names to the feed query column names. --->
<cfset columnMapStruct = StructNew()>
<cfset columnMapStruct.publisheddate = "ORDERDATE">
<cfset columnMapStruct.content = "ADDRESS">
<cfset columnMapStruct.title = "CUSTOMERFIRSTNAME">
<cfset columnMapStruct.rsslink = "ORDERID">
<!--- Set the feed metadata. --->
<cfset meta.title = "Art Orders">
<cfset meta.link = "http://feedlink">
<cfset meta.description = "Orders at the art gallery">
<cfset meta.version = "rss_2.0">
<!--- Create the feed. --->
<cffeed action="create"
query="#getOrders#"
properties="#meta#"
columnMap="#columnMapStruct#"
xmlvar="rssXML">
<cfdump var="#XMLParse(rssXML)#">
Reading feedsThe cffeed tag does not validate
the feeds that it reads. It can read invalid or loosely formatted
feeds, but ignores some or all of the invalid content. For example,
if you put more than one rights element in the
Atom feed (which invalidates the feed), the cffeed tag
ignores the elements after the first one, and doesn’t generate an
error.
Dates and times in feeds that are being read must
be in W3C or RFC 822 format. ColdFusion can also read iTunes extension
dates in the format normally used by the iTunes music store.
ExampleThe
following example creates an RSS feed. Enter fields for the feed
title, link, and description elements. Also enter title, link, and
description fields for one item. A second item is optional. The
application saves the feed in a createRSSOutput.xml file in the
feedTest subdirectory of the directory that contains the CFML page.
<!--- Generate the feed when the user submits a filled in form. --->
<cfif isDefined("Form.Submit")>
<cfscript>
// Create the feed 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 feed 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 feed and save it to a file and variable. --->
<cffeed action = "create"
name = "#myStruct#"
outputFile = "feedTest/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 Feed 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>
The following application is a simple
feed reader that handles RSS and Atom feeds. It displays the feed
title; for each item or entry, it shows the title as a link, and
shows the published date and the item or entry contents. To use
this example to read the feed created by the first application,
enter the URL for the file the application created, for example, http://localhost:8500/cffeed/feedTest/createRSSOutput.xml.
<!--- Process the feed data if the user submitted the form --->
<cfif isDefined("Form.Submit")>
<cffeed source = "#theURL#"
properties = "myProps"
query = "myQuery">
<!--- Display the feed output.
Use conditional logic for to handle different feed 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 feed URL or file --->
<cfform name = "SetFeed" preserveData = "yes">
Enter Feed URL:
<cfinput type = "text" size = "60" name = "theURL"><br><br>
<cfinput type = "Submit" name = "submit" value = "Submit">
</cfform>
|