2013-12-12 41 views
-1

SimpleXML只允许访问具有特定名称的元素吗?我一直试图从一些rss提要中获取发布日期,当日期包含在pubDate标记内时可能会发生这种情况,但我在使用名为“dc:date “PHP - 无法使用简单XML访问某些元素

<dc:date>2013-12-12T22:30:46+00:00</dc:date> 

当我print_r的,项目看起来像这样

$rss = simplexml_load_file($source_url); 

[0] => SimpleXMLElement Object 
        (
         [title] => NEWS: Mayday Parade post 2014 Vans Warped Tour announcement video 
         [link] => http://www.altpress.com/news/entry/mayday_parade_post_2014_vans_warped_tour_announcement_video 
         [guid] => http://www.altpress.com/news/entry/mayday_parade_post_2014_vans_warped_tour_announcement_video 
        ) 

DC最新的迹象。这是SimpleXML的行为?我怎么可能访问的日期,我访问了饲料,这是一个:http://www.altpress.com/rss

回答

2

随着SimpleXMLElement::children documentation状态,则必须明确地提供命名空间,如果你想查询的任何非默认的(如NULL)命名空间中的孩子。

例如,考虑:

$xml = '<?xml version="1.0" encoding="UTF-8" ?> 
<rss xmlns:dc="my.dc.urn"> 
    <channel> 
     <item> 
      <title>Tom And Jerry</title> 
      <category>Comicbook</category> 
      <dc:date>2013-12-12T22:30:46+00:00</dc:date> 
     </item> 
    </channel> 
</rss> 
'; 

$rss = simplexml_load_string($xml); 

$item = $rss->channel[0]->item[0]; 

print_r($item->children()); 
//prints out "title" and "category" 

print_r($item->children("dc", true)); 
//prints out "date" within the "dc" namespace (e.g. "dc:date")