1

可能重复:
PHP SimpleXML 命名空间问题

我正在编写一个 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>我试图访问的节点。

4

3 回答 3

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;
}
于 2012-10-09T17:53:54.420 回答
2
$streamData->registerXPathNamespace("dc", "http://purl.org/dc/elements/1.1/");
$nodes = $streamData->xpath("//item/dc:date");
于 2012-10-09T17:58:30.190 回答
0

如果您的数据源没问题,那么这对我来说适用于 simplexml:

(字符串)$项目->日期

于 2012-10-09T17:44:36.377 回答