无法使用ColdFusion解析远程RSS提要

时间:2009-09-29 13:35:56

标签: coldfusion rss parsing

我有一个令人烦恼的时间在Intranet站点上显示远程RSS提要。我正在使用MM_ XSLTransform.cfc版本0.6.2来提取feed和一个基本的xsl来输出。 Feed网址为www.fedsources.com/FedsourcesNet/RssFeeds/RSS_MarketFlash.aspx。如果您在浏览器中打开它,您会看到它似乎是一个普通的RSS源。但是当我尝试在CF中显示它时,我得到以下“MM_ XSLTransform错误。 www.fedsources.com/FedsourcesNet/RssFeeds/RSS_ MarketFlash.aspx不是有效的XML文档。 解析www.fedsources.com/FedsourcesNet/RssFeeds/RSS_ MarketFlash.aspx 解析XML文档时发生错误。 prolog中不允许使用内容。“(实际错误包括网址中的http://。然后将订阅源转储为错误消息的一部分。
特别令人沮丧的是,如果我查看RSS的来源并将其复制并粘贴到文本文件中,然后解析该文本文件,它就会显示正常。 运行CF版本7.
我尝试将字符集从UTF-8更改为windows-1252,但是在开头添加了一些奇怪的字符并没有帮助。我还试图剥离<channel&gt;之间的所有内容。和<item&gt;但这没有用。
我已经使用相同的代码成功解析了防火墙外的其他RSS源。有没有关于导致错误的aspx扩展?有什么想法吗?有人吗?
感谢。

1 个答案:

答案 0 :(得分:3)

您用于解析XML文档的确切代码是什么?如果您在文档中的<?xml?>标记之前有一些数据,通常会发生此特定错误,即使单个空格也可能导致问题。

我不熟悉您提到的特定CFC,因此我无法为您排除故障,但请确保您将尝试解析任何XML内容周围的Trim函数。

更新:谷歌的快速搜索引导我阅读本·纳德尔的这篇文章:http://www.bennadel.com/blog/1206-Content-Is-Not-Allowed-In-Prolog-ColdFusion-XML-And-The-Byte-Order-Mark-BOM-.htm

您需要从Feed中删除字节顺序标记。此代码可以正常运行:

<cfhttp method="get" url="http://www.fedsources.com/FedsourcesNet/RssFeeds/RSS_MarketFlash.aspx" />
<cfset xmlResult = XmlParse(REReplace( cfhttp.FileContent, "^[^<]*", "", "all" )) />
<cfdump var="#XMLParse(xmlResult)#" />