mam problem z dostępem do tagów z namespace 'media'. Oto fragment pliku xml:
<?xml version="1.0" encoding="utf-8"?> <rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" xmlns:dc="http://purl.org/dc/elements/1.1/" > <channel> (...) <item> <title>Fireshow</title> <link>http://www.flickr.com/photos/pawik/977663674/</link> <description>(...)</description> <pubDate>Wed, 1 Aug 2007 12:53:41 -0800</pubDate> <dc:date.Taken>2007-07-31T23:19:55-08:00</dc:date.Taken> <author>nobody@flickr.com (pawik)</author> <guid isPermaLink="false">tag:flickr.com,2004:/photo/977663674</guid> <media:content url="http://farm2.static.flickr.com/1301/977663674_b37886a373_o.jpg" type="image/jpeg" height="800" width="676"/> <media:title>Fireshow</media:title> <media:text type="html">(...)</media:text> <media:thumbnail url="http://farm2.static.flickr.com/1301/977663674_126b55bad5_s.jpg" height="75" width="75" /> <media:credit role="photographer">pawik</media:credit> <media:category scheme="urn:flickr:tags">show night fire frog fireshow gdynia</media:category> </item> (...) </channel> </rss>
a to kod php (który nie działa):
<?php $xml = simplexml_load_string( $this->file_content ); foreach ($xml->channel->children() as $tag => $item) { if ($tag == 'item') { } } ?>
a to wynik 3 var_dump'ów:
Kod
object(SimpleXMLElement)#17 (6) {
["title"]=>
string(8) "Fireshow"
["link"]=>
string(45) "http://www.flickr.com/photos/pawik/977663674/"
["description"]=>
string(282) "(...)"
["pubDate"]=>
string(30) "Wed, 1 Aug 2007 12:53:41 -0800"
["author"]=>
string(25) "nobody@flickr.com (pawik)"
["guid"]=>
string(36) "tag:flickr.com,2004:/photo/977663674"
}
object(SimpleXMLElement)#9 (0) {
}
NULL
["title"]=>
string(8) "Fireshow"
["link"]=>
string(45) "http://www.flickr.com/photos/pawik/977663674/"
["description"]=>
string(282) "(...)"
["pubDate"]=>
string(30) "Wed, 1 Aug 2007 12:53:41 -0800"
["author"]=>
string(25) "nobody@flickr.com (pawik)"
["guid"]=>
string(36) "tag:flickr.com,2004:/photo/977663674"
}
object(SimpleXMLElement)#9 (0) {
}
NULL
Na moje oko to php po prostu nie widzi namespace 'media', więc czy został on dobrze zadeklarowany? teoretycznie w deklaracji namespace powinien być odnośnik do specyfikacji, tymczasem jest odnośnik do wyszukiwarki yahoo.
Próbowałem też tym sposobem, dodawałem NS za pomocą registerXPathNamespace() ale bez rezultatów.
Używam php 5.2.3.