Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][xml] Problem z dostępem do namespace
Forum PHP.pl > Forum > PHP
Jim
Witam,
mam problem z dostępem do tagów z namespace 'media'. Oto fragment pliku xml:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <rss version="2.0"
  3.        xmlns:media="http://search.yahoo.com/mrss/"
  4.      xmlns:dc="http://purl.org/dc/elements/1.1/"
  5.        >
  6.      <channel>
  7.            (...)
  8.            <item>
  9.                  <title>Fireshow</title>
  10.                  <link>http://www.flickr.com/photos/pawik/977663674/</link>
  11.                  <description>(...)</description>
  12.                  <pubDate>Wed, 1 Aug 2007 12:53:41 -0800</pubDate>
  13.                        <dc:date.Taken>2007-07-31T23:19:55-08:00</dc:date.Taken>
  14.                  <author>nobody@flickr.com (pawik)</author>
  15.                  <guid isPermaLink="false">tag:flickr.com,2004:/photo/977663674</guid>
  16.                        <media:content url="http://farm2.static.flickr.com/1301/977663674_b37886a373_o.jpg"
  17.                               type="image/jpeg" height="800" width="676"/>
  18.                  <media:title>Fireshow</media:title>
  19.  
  20.                  <media:text type="html">(...)</media:text>
  21.                  <media:thumbnail url="http://farm2.static.flickr.com/1301/977663674_126b55bad5_s.jpg" height="75" width="75" />
  22.                  <media:credit role="photographer">pawik</media:credit>
  23.                  <media:category scheme="urn:flickr:tags">show night fire frog fireshow gdynia</media:category>
  24.  
  25.            </item>
  26.            (...)
  27.      </channel>
  28. </rss>


a to kod php (który nie działa):

  1. <?php
  2. $xml = simplexml_load_string( $this->file_content );
  3.  
  4. foreach ($xml->channel->children() as $tag => $item) {
  5. if ($tag == 'item') {
  6. var_dump($item);
  7. var_dump($item->media);
  8. var_dump($item->media->thumbnail);
  9. }
  10. }
  11. ?>

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


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.
Blodo
SimpleXML nie dziala z namespacami. Mozesz kombinowac i kombinowac a i tak dupa. Ja bym na twoim miejscu obaczyl XML Readera.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.