XML_Feed_Parser およびその拡張

XML_Feed_Parser およびその拡張 -- XML_Feed_Parser での拡張の処理

説明

XML 名前空間を使用することで、シンジケーションフォーマットは簡単に拡張可能です。 実際、現在使用されている拡張フォーマットの数は莫大なものになります。

XML_Feed_Parser は、 中心となる機能を各種シンジケーションフォーマット間で共有することを念頭においたものです。 本当に一般的に使用できる拡張のいくつかは、ネイティブでサポートしています。 その拡張が特定のフォーマットや機能を他のものに一致させるものの場合などがこれにあたります。 たとえば RSS2 の content 拡張などです。 しかし、大半の拡張はごく一部の人たちの要件を満たすためだけのものであり、 そういうものをサポートしていると、あっという間にパッケージが肥大化してしまいます。

将来のバージョンでは適切な拡張方式を提供することも可能です。 それ以外のやり方として、クラス内で使用している DOM モデルに直接アクセスすることができます。 これにより、パッケージを特別なハンドラでラップすることが可能となります。

たとえば、'pheed' 拡張 (名前空間は http://www.pheed.com/pheed/) を使用するには、このようにします。
$feed = new XML_Feed_Parser($xml_source);
$entry = $feed->getEntryByOffset(0);
$eModel = $entry->model;

$thumbnails = $eModel->getElementsByTagNameNS(
    'http://www.pheed.com/pheed/', 'thumbnail');

if ($thumbnails->length) {
    $thumbnail_url = $thumbnails->item(0)->nodeValue;
}