Проблемы с синтаксическим анализом удаленного RSS-канала с помощью ColdFusion

У меня неприятное время, когда я показываю удаленный RSS-канал на сайте интрасети. Я использую MM_ XSLTransform.cfc версии 0.6.2 для извлечения фида и базовый xsl для вывода. URL-адрес канала: 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-документа. Содержимое не разрешено в прологе. " (фактическая ошибка включала http: // в URL-адресах. Затем канал выгружается как часть сообщения об ошибке.
Что особенно расстраивает, так это то, что я просматриваю источник RSS и копирую и вставляю его в текстовый файл, затем проанализируйте этот текстовый файл, он отображается нормально. Запуск CF версии 7.
Я попытался изменить кодировку с UTF-8 на windows-1252, но это добавило некоторые странные символы в начале и не помогло. Я также пробовал удаление всего между <channel> и <item>, но это не помогло.
Я успешно проанализировал другие RSS-каналы за пределами нашего брандмауэра, используя тот же код. Есть ли что-то в расширении aspx, которое вызывает ошибку? Есть мысли? Кто-нибудь?
Спасибо.


person Arcster    schedule 29.09.2009    source источник


Ответы (1)


Какой точный код вы используете для синтаксического анализа XML-документа? Эта конкретная ошибка обычно возникает, если у вас есть данные перед тегом <?xml?> в документе, даже один пробел может вызвать проблему.

Я не знаком с конкретным CFC, о котором вы упомянули, поэтому я не могу устранить его для вас, но убедитесь, что вы используете функцию Trim для любого XML-контента, который вы собираетесь попытаться проанализировать.

ОБНОВЛЕНИЕ. Быстрый поиск в Google привел меня к этому сообщению от Бена Наделя: http://www.bennadel.com/blog/1206-Content-Is-Not-Allowed-In-Prolog-ColdFusion-XML-And-The-Byte-Order-Mark-BOM-.htm

Вам необходимо удалить метку порядка байтов из фида. Этот код работает без ошибок:

<cfhttp method="get" url="http://www.fedsources.com/FedsourcesNet/RssFeeds/RSS_MarketFlash.aspx" />
<cfset xmlResult = XmlParse(REReplace( cfhttp.FileContent, "^[^<]*", "", "all" )) />
<cfdump var="#XMLParse(xmlResult)#" />
person Dan Short    schedule 29.09.2009
comment
Дэниел, спасибо. Это сделало это. Вчера я нашел некоторую связанную информацию на сайте Бена Наделя, но почему-то пропустил этот конкретный пост. Мне только жаль, что я раньше не обратился к stackoverflow! - person Arcster; 29.09.2009