2010-01-09 56 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轉儲,並在出現錯誤時檢查它。

相關問題