Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyciaganie danych z xml, Wybrany element
Piotr333
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 18.06.2015

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


Witam.

Mam problem. Potrzebuję wyciągnąć pewne wartości z pliku xml, a dokładnie z linku
http://www.malopolska.pl/_layouts/WrotaMal...ata.aspx?data=2

Plik jest cały czas aktualizowany i zmieniają się dane pomiarowe oraz godzina i wpłynięcia. Potrzebuje napisać skrypt,który wyciągnie tylko najnowszą wartość parametru PM10 ze stacji Kraków ul. Bujaka(akualna).
Odrazu chciałbym zaznaczyć że jestem nowicjuszem jeżeli chodzi o pisanie w php. Potrzebuje tylko wskazówek
Napisałem coś takiego

  1. <?php
  2. $curl = curl_init();
  3. curl_setopt($curl, CURLOPT_URL, 'http://www.malopolska.pl/_layouts/WrotaMalopolski/XmlData.aspx?data=2');
  4. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  5. $dane = curl_exec($curl);
  6. curl_close($curl);
  7.  
  8.  
  9. $Current = new SimpleXMLElement($dane);
  10. $data = $Current->Item[224];
  11. echo " ".$data->Date;
  12. echo "<br/>\n";
  13.  
  14. echo" Wynik= " .$data->Value;
  15. echo " ".$data->Pollutant;
  16. echo " ".$data->City;
  17. echo "<br/>\n\n\n";
  18.  
  19. ?>


Jednak numerki Item się zmieniają i za każdym razem otrzymuję inny Parametr.
Proszę o jakąś podpowiedź czym to ugryźć..
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Comandeer
post
Post #2





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


Hmm… Skoro już się bawimy XPath to czemu nie pobawić się porządnie? (IMG:style_emoticons/default/wink.gif)

Skoro już mamy miasto to potrzebujemy jeszcze sprawdzić czy ten sam rodzic nie zawiera odpowiedniego Pollutant, więc można zastosować following-sibling. Dodatkowo można też kazać XPath zwrócić tylko 1. wynik (bo tam będzie najnowsze info). Tym samym uzyskujemy takie ładne zapytanie:
Kod
(//Current/Item/City[.="Kraków, ul. Bujaka"]/following-sibling::Pollutant[.="PM10"]/parent::*)[1]


Zatem całość będzie wyglądać tak:
  1. <?php
  2.  
  3. $curl = curl_init();
  4. curl_setopt($curl, CURLOPT_URL, 'http://www.malopolska.pl/_layouts/WrotaMalopolski/XmlData.aspx?data=2');
  5. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  6. $dane = curl_exec($curl);
  7. curl_close($curl);
  8.  
  9. $Current = new SimpleXMLElement($dane);
  10.  
  11. $data = $Current->xpath('(//Current/Item/City[.="Kraków, ul. Bujaka"]/following-sibling::Pollutant[.="PM10"]/parent::*)[1]')[0]; //do tablicy $nodes łapiemy wszystko, co ma "Kraków, Ul. Bujaka" jako City
  12. echo " ".$data->Date;
  13. echo "<br/>\n";
  14.  
  15. echo" Wynik= " .$data->Value;
  16. echo " ".$data->Pollutant;
  17. echo " ".$data->City;
  18. echo "<br/>\n\n\n";
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 3.10.2025 - 06:20