2

simplepie を使用して、フィード内の「id」タグの属性を取得しようとしています。

これはフィードからのコードの一部です:

<updated>2012-03-12T08:26:29-07:00</updated>
<id im:id="488627" im:bundleId="dmtmobile">http://www.example.com</id>
<title>Draw Something by OMGPOP - OMGPOP</title>

idタグに含まれるim:id属性から数字(488627)を取得したい

どうすればこれを入手できますか?

やってみ$item->get_item_tags('','im:id')たけどダメだった

4

2 に答える 2

2

これが Atom 1.0 フィードにある場合は、Atom 名前空間を使用する必要があります。

$data = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'id');

そこから、必要な属性が次のとおりであることがわかります。

$id = $data['attribs'][IM_NAMESPACE]['id']
$bundleID = $data['attribs'][IM_NAMESPACE]['bundleId']`

whereIM_NAMESPACEimXML 名前空間に設定されます (つまり、の値は何ですかxmlns:im)。

于 2012-03-12T19:30:47.207 に答える
0

SimplePie が名前空間を要求する理由は、指定された名前空間の下にノード要素を内部的に格納するためです。特定の名前空間がわからない場合は、print_r を使用してダンプします。

print_r($item->data['child']);

名前空間がわかっている場合は、子要素に直接アクセスするか、単純なシーカー関数を記述して各名前空間をステップ実行し、一致するタグを探すこともできます。

$data = $item->data['child']['im']['bundleId'][0]['data'];

get_item_tags() 関数はばかげていて、通常は望みどおりのことをしませんが、非常に単純で、独自の特別な目的の関数に簡単に置き換えることもできます。元のソースは次のとおりです。

public function get_item_tags($namespace, $tag)
{
    if (isset($this->data['child'][$namespace][$tag]))
    {
        return $this->data['child'][$namespace][$tag];
    }
    else
    {
        return null;
    }
}
于 2014-02-01T09:51:50.360 に答える