1

私はこのすべてにまったくの初心者ですが、しばらく前に、RSS フィードを解析するための小さなスクリプトを Perl で書きました。次のように始まります。

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)。モジュールを再インストールしようとしましたが、何も変わらないようです。

4

3 に答える 3

1

XML::RSS::Parser とそれが使用するモジュールの新規インストールで同じエラー (同じメッセージと行番号) が発生します (XML::Elemental を使用する XML::Elemental 上のフィード構造の単なるラッパーです)。解析する SAX など)。

ただし、Firefox はファイルが有効であることを示します。

XML::Tiny はファイルを解析できるように見えるので、それを変換するための少しの作業で十分かもしれません。

于 2010-01-09T14:09:42.820 に答える
1

ちょうど今私のために働きます。しばらくの間、RSS フィードに不正な破損した XML が含まれていたのでしょうか? このエラーは、指定された行でフィード内のタグが一致していないことを示しているようです。

それでも問題が解決しない場合は、curl (または同様のもの) を使用して生の XML を表示し、エラーがないかどうかを確認してください。

于 2010-01-09T14:02:23.543 に答える
0

何が起こっているのかを確認するには、実際のソースを確認する必要があります。「ブラウザでウェブサイトにアクセスする」だけでなく、プログラムが見ている実際のソースを見てください。何が起こったのか誰が知っていますか?ドキュメントの半分しか送信されなかった何らかの不具合?同じクライアントではないため、別のソースが送信されましたか?

プログラムが実行されるたびに毎回 XML のダンプを作成し、エラーが発生した場合はそれを調べます。

于 2010-01-09T23:05:56.687 に答える