1

重複の可能性:
PHP SimpleXML 名前空間の問題

RSS フィードを Web ページに解析するための PHP スクリプトを作成しています。問題は日付ノードへのアクセスです。date()PHP関数なので、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

If your data source is OK, then this works for me with simplexml:

(string) $item->date

于 2012-10-09T17:44:36.377 に答える