我正在编写PHP脚本来解析网页的RSS源。问题是访问日期节点。我认为PHP很混乱,因为date()
是一个PHP函数。
<?php
$streamData = simplexml_load_file('http://www.naps.org/index.php/rss/','SimpleXMLElement', LIBXML_NOCDATA);
foreach ($streamData->channel->item as $item){
$itemTitle = ($item->title);
$itemLink = ($item->link);
$itemDate = date_parse($item->date);
$itemYear = $itemDate[year];
$itemMonth = $itemDate[month];
$itemDay = $itemDate[day];
$itemOutputDate = $itemYear.'-'.$itemMonth.'-'.$itemDay;
echo $itemOutputDate;
}
?>
// echos...
--
--
--
--
--
如何访问$item->date
节点?
修改
它实际上是我尝试访问的<dc:date>
节点。
答案 0 :(得分:2)
日期位于dc
命名空间下,我们可以看到它指向http://purl.org/dc/elements/1.1/
,例如:
$streamData = simplexml_load_file('http://www.naps.org/index.php/rss/','SimpleXMLElement', LIBXML_NOCDATA);
foreach ($streamData->channel->item as $item)
{
$dc = $item->children('http://purl.org/dc/elements/1.1/');
$itemDate = date_parse($dc->date);
$itemYear = $itemDate['year'];
$itemMonth = $itemDate['month'];
$itemDay = $itemDate['day'];
$itemOutputDate = $itemYear.'-'.$itemMonth.'-'.$itemDay;
echo $itemOutputDate;
}
答案 1 :(得分:2)
$streamData->registerXPathNamespace("dc", "http://purl.org/dc/elements/1.1/");
$nodes = $streamData->xpath("//item/dc:date");
答案 2 :(得分:0)
如果您的数据源正常,那么这对我来说非常适用于simplexml:
(字符串)$ item-&gt; date