2010-01-09 72 views
1

我是一个完整的noob,但是前一段时间我在Perl中编写了一个小脚本来解析RSS提要。它开始是这样的:为什么Perl的XML :: RSS :: Parser会抱怨“End tag mismatch”?

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"> 

我不知道以前是不是这样。我尝试了其他一些原子提要,并且解析器似乎在所有这些原子提供商中都崩溃了。问题是,系统管理员在截止日期之后才会回来,所以我必须使用可用的东西。

更新:

有趣。它在我的w7 64 * active perl)和ubuntu(32,9.10)安装上都会中断。虽然我的朋友的ubuntu工作得很好(相同,9.10)。我试图重新安装模块,但这似乎没有改变任何东西。

回答

1

刚才适合我。也许这个RSS提要有一段时间坏了腐败的XML?该错误似乎指向在所示行的Feed中未匹配的标签。

如果仍在发生,请尝试使用curl(或类似的)来显示原始XML并检查是否有错误。

+1

我们都看到相同的数据吗?对我来说,饲料数据线67: - 可能的Perl /模块的版本不同 - 我有<![CDATA [Tylers义演在囊性纤维化的援助与该海莱伯斯]!>: 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在-e线1. – 2010-01-09 14:46:05

+0

v5.10.0 4 2.11 0.96以及这里,但我收到一条错误消息。它当然看起来有效。 – Anonymous 2010-01-09 15:12:48

1

我收到了XML :: RSS :: Parser和它使用的模块(它只是XML :: Elemental上的Feed结构的包装器)的全新安装错误(相同的消息和行号),它使用XML :: SAX解析等)。

但是,Firefox表示该文件是有效的。

XML :: Tiny似乎能够解析文件,所以这可能足以用一点工作来转换它。

0

你需要看看实际的来源,看看发生了什么。不只是“在浏览器中访问网站”,而是看看该程序看到的实际源代码。谁知道发生了什么?一些故障只发送了一半的文件?发送不同的来源,因为它不是同一个客户端?

每次程序运行时我都会执行XML转储,并在出现错误时检查它。

相关问题