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
答案 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")