Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [XML][PHP] simple_xml
kubap007
post
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 29.05.2007

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


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
gac3k
post
Post #2





Grupa: Zarejestrowani
Postów: 90
Pomógł: 8
Dołączył: 28.07.2009

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


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 :

Ten post edytował gac3k 16.09.2011, 10:00:13
Go to the top of the page
+Quote Post
kubap007
post
Post #3





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 29.05.2007

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


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. }
Go to the top of the page
+Quote Post
gac3k
post
Post #4





Grupa: Zarejestrowani
Postów: 90
Pomógł: 8
Dołączył: 28.07.2009

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


wydaje mi się że mój kod zająłby odrobinkę mniej miejsca ale cóż, skoro sobie poradziłeś to ekstra (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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: 22.08.2025 - 12:42