在PHP中将日期作为XML节点访问

时间:2012-10-09 17:36:43

标签: php rss

  

可能重复:
  PHP SimpleXML Namespace Problem

我正在编写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>节点。

3 个答案:

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