PHP - 无法使用Simple XML访问某些元素

时间:2013-12-12 23:01:37

标签: php xml rss

SimpleXML是否只允许访问具有特定名称的元素?我一直试图从几个RSS订阅源获取发布日期,这可能是在pubDate标记中包含日期时可能的,但是我在使用名为“dc:date”的标记内的日期时遇到问题“

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

没有直流日期的迹象。这是SimpleXML的行为吗?我怎么可能访问日期,我正在访问的提要是这个:http://www.altpress.com/rss

1 个答案:

答案 0 :(得分: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")