2012-03-12 48 views
2

我試圖在使用simplepie的feed中獲取「id」標籤的屬性。使用SimplePie從項目(標籤)獲取屬性

這是代碼從飼料的片段:包含在ID標籤

我怎樣才能得到這個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> 

我想從即時獲得數(488627) ?

我試圖$item->get_item_tags('','im:id')但沒有奏效

回答

1

如果這是一個Atom 1.0提要,你要使用Atom namespace

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

從那裏,你應該再發現你想要的屬性是:

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

其中IM_NAMESPACE設置爲im XML命名空間(即什麼值O 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; 
    } 
}