2010-01-09 1 views
1

Я полный noob во всем этом, но когда-то я написал небольшой скрипт в Perl для анализа RSS-канала. Она начинается так:Почему XML-файл Perl XML :: RSS :: Parser жалуется на «несоответствие тегов»?

use strict; 
use XML::RSS::Parser; 
use Data::Dumper; 
my $url = "http://www.livenation.co.uk/Venue/159/Southampton-Guildhall-tickets/RSS"; 
my $parser = XML::RSS::Parser->new(); 
my $feed = $parser->parse_uri($url); 
print Dumper($feed); 
print $parser->errstr(); 

Он используется для работы (не помню, когда я в последний раз проверял, но несколько недель назад казалось, работать), но сегодня это уже не делает. RSS-канал жив и проходит через feedvalidator.org. В errstr() возвращает это:

End tag mismatch (title != description) [Ln: 67, Col: 95] 

Я не совсем уверен, как это произошло и что это значит. Источник RSS:

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 

Я не знаю, было ли это раньше. Я попробовал несколько других кормов для атома, и парсер, похоже, сломал их. Проблема заключается в том, что sysadmin не возвращается до истечения срока, поэтому я должен использовать то, что доступно.

ОБНОВЛЕНИЕ:

интересный. он ломается как на моем w7 64 * активном perl), так и на ubuntu (32, 9.10). отлично работает на ubuntu моего друга (то же самое, 9.10). Я попытался переустановить модули, но это ничего не меняет.

ответ

1

Работы для меня только сейчас. Возможно, RSS-канал в течение некоторого времени имел плохой коррумпированный XML? Кажется, что ошибка указывает на пропущенные метки в фиде в указанной строке.

Если это все еще происходит, попробуйте использовать curl (или аналогичный), чтобы отобразить необработанный XML и проверить его на наличие ошибок.

+1

Мы все видим одни и те же данные? Для меня, строка 67 данных подачи является: - Может Perl/модуль версии отличаются - у меня есть <[CDATA [Tylers Benefit Gig в помощь муковисцидоза с РЭП]]!>: Perl -MXML :: RSS :: Parser -e 'warn' $^V $ XML :: RSS :: Parser :: VERSION $ XML :: Elemental :: VERSION $ XML :: SAX :: VERSION "' v5.10.0 4 2.11 0.96 at -e строка 1. –

+0

v5.10.0 4 2.11 0.96 также здесь, но я получаю сообщение об ошибке. Это, безусловно, справедливо. – Anonymous

1

Я получаю ту же ошибку (то же сообщение и номер строки) со свежей установкой XML :: RSS :: Parser и используемыми ею модулями (это всего лишь оболочка для структуры фида через XML :: Elemental, которая использует XML :: SAX для разбора и т. д.).

Firefox указывает, однако, что файл действителен.

XML :: Tiny, похоже, способен анализировать файл, так что этого может быть достаточно, чтобы немного его преобразовать.

0

Для того, чтобы узнать, что будет, вы должны посмотреть реальный источник. Не просто «перейдите на сайт в браузере», но посмотрите на фактический источник, который видит программа. Кто знает, что случилось? Какой-то глюк, куда отправили только половину документа? Разный источник отправлен, потому что это не тот же клиент?

Я буду делать дамп XML каждый раз каждый раз, когда программа запускается и проверяется, когда есть ошибки.

 Смежные вопросы

  • Нет связанных вопросов^_^