2012-03-12 50 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; 
    } 
}