Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XML][PHP] simple_xml
Forum PHP.pl > Forum > Przedszkole
kubap007
Cześć,

Próbuję zaciągnąć dane z xml przy wykorzystaniu simple_xml. Ogólnie wszystko zawsze jest ok, ale dzisiaj natrafiłem na przypadek którego nie wiem jak ugryźć.

  1. <oferta>
  2. <id>4KN-BS-403</id>
  3. <param nazwa="typlokalu" typ="text">vir_oferta_rodzaj_obiektu_zamek_palac</param>
  4. <param nazwa="wojewodztwo" typ="text">LUBELSKIE</param>
  5. <param nazwa="powiat" typ="text">opolski</param>
  6. <param nazwa="gmina" typ="text">Chodel</param>
  7. <param nazwa="miasto" typ="text">Chodel</param>
  8. <param nazwa="dzielnica" typ="text">Ratoszyn</param>
  9. <param nazwa="powierzchnia" typ="real">712,00</param>
  10. <param nazwa="ogrzewanie" typ="text">własne dla budynku</param>


ale niektóre oferty wyglądają tak

  1. <oferta>
  2. <id>4KN-MS-288</id>
  3. <param nazwa="wojewodztwo" typ="text">LUBELSKIE</param>
  4. <param nazwa="powiat" typ="text">Lublin m.</param>
  5. <param nazwa="miasto" typ="text">Lublin</param>
  6. <param nazwa="dzielnica" typ="text">LSM</param>
  7. <param nazwa="powierzchnia" typ="real">72,50</param>
  8. <param nazwa="liczbapokoi" typ="int">5</param>
  9. <param nazwa="liczbatelefonow" typ="int">1</param>
  10. <param nazwa="pietro" typ="int">4</param>


A więc położenie parametrów się zmienia.
  1. $oferta -> param[0];
  2. $oferta -> param[0]["nazwa"];

Tak dostanę się do wartości i nazwy parametru, którą potrzebuje ale na za wiele mi się ona nie przyda, bo układ parametrów się zmienia i nie zawsze jest w tym samym położeniu. Nie wiem jak się dobrać do tych wartości.
gac3k
wyszukuj za pomocą xpath konkretne parametry, zamiast używać takiej tablicy. Tutaj masz więcej informacji. W twoim przypadku np.

  1. $oferta->xpath("//oferta//param[@nazwa='wojewodztwo']");


nie wiem czy będzie działać bo nie sprawdzałem. Pozdrawiam :
kubap007
Dzięki, ale w między czasie troche pokombinowałem:

  1. foreach ($oferta -> param as $param)
  2. {
  3. switch((string) $param['nazwa'])
  4. {
  5. case 'wojewodztwo':
  6. $wojewodztwo = $param;
  7. break;
  8. case 'powiat':
  9. $powiat = $param;
  10. break;
  11. case 'gmina':
  12. $gmina = $param;
  13. break;
  14. case 'miasto':
  15. $miasto = $param;
  16. break;
  17. case 'liczbapokoi':
  18. $room_amount = $param;
  19. break;
  20. case 'powierzchnia':
  21. $area = $param;
  22. break;
  23. case 'pietro':
  24. $floor = $param;
  25. break;
  26. case 'liczbapieter':
  27. $floor_total = $param;
  28. break;
  29. case 'rokbudowy':
  30. $built = $param;
  31. break;
  32. case 'winda':
  33. $elevator = $param;
  34. break;
  35. case 'opis':
  36. $description = $param;
  37. break;
  38. }
  39. }
gac3k
wydaje mi się że mój kod zająłby odrobinkę mniej miejsca ale cóż, skoro sobie poradziłeś to ekstra smile.gif
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.