Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][xml] Problem z dostępem do namespace
Jim
post 23.09.2007, 17:36:32
Post #1





Grupa: Zarejestrowani
Postów: 111
Pomógł: 0
Dołączył: 27.07.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Blodo
post 23.09.2007, 19:17:18
Post #2





Grupa: Zarejestrowani
Postów: 51
Pomógł: 1
Dołączył: 1.02.2005

Ostrzeżenie: (0%)
-----


SimpleXML nie dziala z namespacami. Mozesz kombinowac i kombinowac a i tak dupa. Ja bym na twoim miejscu obaczyl XML Readera.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 12:53