youtube.xml
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:gd="http://schemas.google.com/g/2005" xmlns:yt="http://gdata.youtube.com/schemas/2007"> <entry> ... <yt:duration seconds="1870"/> ... </entry> </feed>
update_videos.php
$source = 'youtube.xml'; // load as file $youtube = new SimpleXMLElement($source, null, true); foreach($youtube->entry as $item){ //title works echo $item->title; //now how to get seconds? My attempt... $namespaces = $item->getNameSpaces(true); $yt = $item->children($namespaces['yt']); $seconds = $yt->duration->attributes(); echo $seconds['seconds']; //but doesn't work :( }
所以我找到了一种使用xpath的方法,这是最好的方法还是与我的问题代码保持一致的方法?只是出于好奇。
$source = 'youtube.xml'; // load as file $youtube = new SimpleXMLElement($source, null, true); $youtube->registerXPathNamespace('yt', 'http://gdata.youtube.com/schemas/2007'); $count = 0; foreach($youtube->entry as $item){ //title works echo $item->title; $attributes = $item->xpath('//yt:duration/@seconds'); echo $attributes[$count]['seconds']; $count++; }