名前¶
XML::RSSLite - 軽量で"形式ばらない"RSS(そしてXMLのようなものの)パーザー
概要¶
use XML::RSSLite;
. . .
parseRSS(\%result, \$content);
print "=== Channel ===\n",
"Title: $result{'title'}\n",
"Desc: $result{'description'}\n",
"Link: $result{'link'}\n\n";
foreach $item (@{$result{'item'}}) {
print " --- Item ---\n",
" Title: $item->{'title'}\n",
" Desc: $item->{'description'}\n",
" Link: $item->{'link'}\n\n";
}
説明¶
このモジュールは利用できるドキュメントから、なるべく多くの内容を取り出そうとします。 そして他の方法に比べるとXMLに従っているかについて、あまり注意を払っていません。 XML::Parserに頼るよりも、これは発見的で、素晴らしい古い形式のPerl正規表現を 利用します。これは単純なハッシュ構造体にデータを格納し、完了したとき 適切なRSSファイルを再構築するために必要な最小限のデータを持っていると みなすことができるように、確実なタグに"別名を付けます"。 これは基本的なチャンネルとその要素のtitle、description、そしてlinkを 取得することを意味します。
このモジュールはRDF & RSSに加えて、"scriptingNews"と"weblog"フォーマットを 解析することにより、より使えるリンクを取り出します。 これは出力をできるだけ"衛生的する"ことも行います。マンジングには以下のものが 含まれます:
- プレーンなテキストにするためHTMLタグを削除
- 0-9~!@#$%^&*()-+=a-zA-Z[];',.:"<>?\s以外の文字を削除
- <link>が空のとき<url>を使用
- <link>が空のとき<title>に間違ったurlを使用
- もし必要であれば、<a href=...>からリンクの取り出し
- ftpとhttpにリンクを制限
- サイトベースに相対的なURLを付与
EXPORT¶
- parseRSS($outHashRef, $inScalarRef)
-
$inScalarRefは解析されるドキュメントが入ったスカラーへのリファレンスです。 その内容は事実上、破壊されます。$outHashRefは解析された内容が格納される ハッシュへのリファレンスです。
EXPORTABLE¶
- parseXML(\%parsedTree, \$parseThis, 'topTag', $comments);
-
- parsedTree - 必須
-
解析されたドキュメントを格納するハッシュへのリファレンス。
- parseThis - 必須
-
解析するドキュメントが入ったスカラーへのリファレンス。
- topTag - オプション
-
ルート・ノードとみなすタグ。ここを未定義にしておくことは推奨されません。
- comments - オプション
-
- false parseThisから内容を削除します will remove contents from parseThis
- true parseThisからコメントを削除します
- 配列リファレンスはtrueで、コメントはここに格納されます
注意¶
これは規範に従っているパーザーではありません。これは以下のものは扱いません
-
<foo bar=">">
-
<foo><bar> <bar></bar> <bar></bar> </bar></foo>
-
<![CDATA[ ]]>
-
PI
以下のものは、確認が行われません。 DTDがなければ適切に処理することはできません。
- エンティティ
- 名前空間
-
これは次のリリースでは入ってくるかもしれません。
参考資料¶
perl(1), XML::RSS
, XML::SAX::PurePerl
, XML::Parser::Lite
, <XML::Parser>
作者¶
Jerrad Pierce <jpierce@cpan.org>.
Scott Thomason <scott@thomasons.org>
ライセンス(=LICENSE)¶
Portions Copyright (c) 2002 Jerrad Pierce, (c) 2000 Scott Thomason. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
翻訳者¶
川合孝典(GCD00051@nifty.ne.jp)