Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: odczyt informacji z XML - problem
Forum PHP.pl > Forum > XML, AJAX > XML
john_doe
Witajcie,
dziś 1sze starcie z XMLem. Chciałbym odczytać takie cudo:

  1. <?php
  2. $xmlstr = <<<XML
  3. <Group title="50's, 60's, 70's and 80's" comment="">
  4.             <Station title=".977 The 80's Channel" url="http://www.977music.com/">
  5.                 <Source>http://www.977music.com/tunein/web/80s.asx</Source>
  6.             </Station>
  7.             <Station title=".977 The Oldies Channel" url="http://www.977music.com/">
  8.                 <Source>http://www.977music.com/tunein/web/oldies128.asx</Source>
  9.             </Station>
  10.             <Station title="1.FM - 50s and 60s" url="http://1.fm/Stations/60s_70s/TuneIn.aspx">
  11.                 <Source>http://60s.1.fm/60s_70s128k</Source>
  12.                 <Source>http://1.fm/TuneIn/WM/energy60s_70s32k/Listen.aspx</Source>
  13.             </Station>
  14. </Group>
  15. <Group title="rock stations" comment="">
  16.             <Station title="1.FM - 80s" url="http://1.fm/Stations/80s_90s/TuneIn.aspx">
  17.                 <Source>http://80s.1.fm/energy80s128k</Source>
  18.                 <Source>http://1.fm/TuneIn/WM/energy80s32k/Listen.aspx</Source>
  19.             </Station>
  20.             <Station title="A Flock of Eighties" url="http://www.accuradio.com/mobile">
  21.                 <Source>http://shoutcast.accuradio.com:8056</Source>
  22.                 <Source>http://dupa</Source>
  23.             </Station>
  24.             <Station title="A Flock of Eighties" url="http://www.accuradio.com/mobile">
  25.                 <Source>http://dupa</Source>
  26.                 <Source>http://shoutcast.accuradio.com:8056</Source>                
  27.             </Station>            
  28. </Group>
  29.  
  30. XML;
  31. ?>


udaje mi się odczytać ALE no właśnie gdy nie ma tego Drugiego <Group> ( docelowo tych sekcji jest duzo wiecej ) i omija mi np drugie <source> czyli gdy mam dwa tagi <source> w jednym <station>.
Odczytuje to jak znalazlem w manualu

  1. <?php
  2.  
  3.    include 'fileXml.php';
  4.  
  5.    $xml = new SimpleXMLElement($xmlstr);
  6.  
  7.    foreach ( $xml->xpath('//Station') as $Station )  
  8.    {
  9.        echo $Station->Source,  '<br />';
  10.    }
  11.  
  12. ?>


i mam z tym klopot.
pozdrawiam
erix
Zwaliduj sobie najpierw XML. To raz.

Dwa:
Cytat
omija mi np drugie <source> czyli gdy mam dwa tagi <source> w jednym <station>.
:
  1. <?php
  2. echo $Station->Source,  '<br />';
  3. ?>

Do poszczególnych elementów Source odwołujesz się jak do tablicy. W związku z tym, puść foreach" title="Zobacz w manualu PHP" target="_manual na tę wartość i będzie wszystko ok. winksmiley.jpg
john_doe
świetnie, dzięki zrobiłem tak i działa bez zarzutu;

XML teraz się waliduje
  1. <?php
  2. $xmlstr = <<<XML
  3. <radios>
  4.     <Group title="50's, 60's, 70's and 80's" comment="">
  5.             <Station title=".977 The 80's Channel" url="http://www.977music.com/">
  6.                 <Source>http://www.977music.com/tunein/web/80s.asx</Source>
  7.             </Station>
  8.             <Station title=".977 The Oldies Channel" url="http://www.977music.com/">
  9.                 <Source>http://www.977music.com/tunein/web/oldies128.asx</Source>
  10.             </Station>
  11.             <Station title="1.FM - 50s and 60s" url="http://1.fm/Stations/60s_70s/TuneIn.aspx">
  12.                 <Source>http://60s.1.fm/60s_70s128k</Source>
  13.                 <Source>http://1.fm/TuneIn/WM/energy60s_70s32k/Listen.aspx</Source>
  14.             </Station>
  15.             <Station title="1.FM - 80s" url="http://1.fm/Stations/80s_90s/TuneIn.aspx">
  16.                 <Source>http://80s.1.fm/energy80s128k</Source>
  17.                 <Source>http://1.fm/TuneIn/WM/energy80s32k/Listen.aspx</Source>
  18.             </Station>
  19.             <Station title="A Flock of Eighties" url="http://www.accuradio.com/mobile">
  20.                 <Source>http://shoutcast.accuradio.com:8056</Source>
  21.                 <Source>http://jakis tam inny source</Source>
  22.             </Station>
  23.             <Station title="A Flock of Eighties" url="http://www.accuradio.com/mobile">
  24.                 <Source>http://kolejny source</Source>
  25.                 <Source>http://shoutcast.accuradio.com:8056</Source>                
  26.             </Station>            
  27.     </Group>
  28.     <Group title="50's, 60's, 70's and 80's" comment="">
  29.             <Station>
  30.                 <Source>http://www.abradio.pl</Source>
  31.             </Station>
  32.             <Station>
  33.                 <Source>http://www.radio.gaga.co.uk</Source>
  34.                 <Source>http://www.rmf.fm</Source>
  35.             </Station>            
  36.     </Group>
  37. </radios>
  38. XML;
  39. ?>


oraz odczyt tagów Source

  1. <?php
  2.  
  3.    include 'fileXml.php';
  4.    
  5.    $xml = new SimpleXMLElement($xmlstr);
  6.  
  7.    foreach ( $xml->xpath('//Source') as $Source )  
  8.    {
  9.        echo $Source,  '<br />';
  10.    }
  11.  
  12. ?>


tak dla innych którzy mieliby podobny "coś" do zrobienia.

Pozdrówka
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.