Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][XML] [JQUERY] Jak pobierać dane z pliku XML
Forum PHP.pl > Forum > Przedszkole
MiNos
Witam, szukam metody na pobranie danych z pliku XML za pomocą jquery i z takiego kodu już umiem pobrać:

  1. <?xml version="1.0"?>
  2. <xml_api_reply version="1">
  3. <weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0">
  4. <forecast_conditions>
  5. <day_of_week>czw.</day_of_week>
  6. <icon>/ig/images/weather/chance_of_snow.gif</icon>
  7. </forecast_conditions>
  8. </weather>
  9. </xml_api_reply>


użyłem takiego kodu znalezionego w sieci:

  1. $(document).ready(function () {
  2. $.ajax({
  3. type: "GET",
  4. url: "api2.xml",
  5. dataType: "xml",
  6. success: fParsujXml
  7. });
  8. });
  9.  
  10. function fParsujXml(xml) {
  11.  
  12. $(xml).find("forecast_conditions").each(function () {
  13. $(".wpisy").append('<div class="wpisy"><div class="tytul">'
  14. + $(this).find("day_of_week").text() + '</div>'
  15. + $(this).find("icon").text() + '</div></div>');
  16.  
  17. $(".wpisy").fadeIn(1000);
  18.  
  19. });
  20.  
  21. }


Niestety nie wiem jak pobrać dane jeśli mam taki układ (plik z pogodą google)

  1. W tym dokumencie nie określono arkusza stylów.
  2. <xml_api_reply version="1">
  3. <weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0">
  4. <forecast_information>
  5. <city data="Wroclaw, Lower Silesian Voivodeship"/>
  6. <postal_code data="wroclaw"/>
  7. <latitude_e6 data=""/>
  8. <longitude_e6 data=""/>
  9. <forecast_date data="2012-02-16"/>
  10. <current_date_time data="1970-01-01 00:00:00 +0000"/>
  11. <unit_system data="SI"/>
  12. </forecast_information>
  13. <current_conditions>
  14. <condition data="Częściowe zachm."/>
  15. <temp_f data="28"/>
  16. <temp_c data="-2"/>
  17. <humidity data="Wilgotność: 80%"/>
  18. <icon data="/ig/images/weather/partly_cloudy.gif"/>
  19. <wind_condition data="Wiatr: zach. z szybkością 10 km/h"/>
  20. </current_conditions>
  21. <forecast_conditions>
  22. <day_of_week data="czw."/>
  23. <low data="-4"/>
  24. <high data="1"/>
  25. <icon data="/ig/images/weather/chance_of_snow.gif"/>
  26. <condition data="Możliwe opady śniegu"/>
  27. </forecast_conditions>
  28. <forecast_conditions>
  29. <day_of_week data="pt."/>
  30. <low data="-2"/>
  31. <high data="4"/>
  32. <icon data="/ig/images/weather/snow.gif"/>
  33. <condition data="Śnieg"/>
  34. </forecast_conditions>
  35. <forecast_conditions>
  36. <day_of_week data="sob."/>
  37. <low data="1"/>
  38. <high data="4"/>
  39. <icon data="/ig/images/weather/fog.gif"/>
  40. <condition data="Mgła"/>
  41. </forecast_conditions>
  42. <forecast_conditions>
  43. <day_of_week data="niedz."/>
  44. <low data="-5"/>
  45. <high data="4"/>
  46. <icon data="/ig/images/weather/chance_of_rain.gif"/>
  47. <condition data="Możliwe opady deszczu"/>
  48. </forecast_conditions>
  49. </weather>
  50. </xml_api_reply>


Może mi ktoś podać przykład jak należy to zrobić?
Nie jestem programistą i czytanie dokumentacji na niewiele mi się zdaje sad.gif bo i tak nie wiem jak to ugryźć.
lipek3
Mniej więcej tak mogłoby to wyglądać
Przez selektor :has(day_of_week) wybieram tylko te węzły forecast_conditions które wewnątrz siebie zawierają węzeł day_of_week
  1. <script type="text/javascript">
  2. $(function(){
  3. $.ajax({
  4. url:'/xml/google_weather.xml',
  5. datatype : 'xml',
  6. success : function(data){
  7. $(data).find('forecast_conditions:has(day_of_week)').each(function(idx,forecast){
  8. var dayOfWeek = $(this).find('dayOfWeek').attr('data');
  9. var low = $(this).find('low').attr('data');
  10. var high = $(this).find('high').attr('data');
  11. var condition = $(this).find('condition').attr('data');
  12. var icon = $(this).find('icon').attr('data');
  13. $('<div/>')
  14. .append($('<span/>').text(dayOfWeek))
  15. .append($('<span/>').text(low))
  16. .append($('<span/>').text(high))
  17. .append($('<span/>').text(condition))
  18. .append($('<span/>').text(icon))
  19. .appendTo('.wpisy')
  20. })
  21. }
  22. })
  23. });

a efekt powinien wyglądać tak :
  1.  
  2. <div class="wpisy">
  3. <div>
  4. <span>-4</span><span>1</span><span>Możliwe opady śniegu</span><span>/ig/images/weather/chance_of_snow.gif</span>
  5. </div>
  6. <div>
  7. <span>-2</span><span>4</span><span>Śnieg</span><span>/ig/images/weather/snow.gif</span>
  8. </div>
  9. <div>
  10. <span>1</span><span>4</span><span>Mgła</span><span>/ig/images/weather/fog.gif</span>
  11. </div>
  12. <div>
  13. <span>-5</span><span>4</span><span>Możliwe opady deszczu</span><span>/ig/images/weather/chance_of_rain.gif</span>
  14. </div>
  15. </div>


MiNos
Super smile.gif teraz wszystko działa, serdecznie dziękuję za pomoc.

Jeszcze jedno pytanie bo plik z pogodą działa mi po zapisaniu go na serwerze w postaci plik.xml a czemu nie działa pobieranie danych jeśli link będzie w postaci?:

xxxxx.google.com/ig/api?weather=wroclaw&hl=pl&oe=utf-8
(xxx oczywiście zamieniamy na htt..)

podpowie mi ktos czemu nie dziala wskazany adres?
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.