2012-03-12 22 views
2

simplepieを使用してフィードの「id」タグの属性を取得しようとしています。SimplePieを使用してアイテム(タグ)から属性を取得

これは、フィードからのコードの断片である:

<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> 

私はイムから番号(488627)を取得したい:ID IDに含まれる属性タグ

私はこれを取得できますか?

私は$item->get_item_tags('','im:id')を試みたが、それは、これはAtom 1.0のフィード内にある場合、あなたはAtom namespaceを使用したいと思う

答えて

1

を動作しませんでした:

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

そこから、あなたはそのを見つける必要がありますあなたが望む属性は次のとおりです。IM_NAMESPACEim XML名前空間(つまり、どのような値0に設定されている

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

f xmlns:imは)です。

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; 
    } 
} 
関連する問題