Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XML][PHP]parsowanie XML SimplyXML
Forum PHP.pl > Forum > Przedszkole
mirobor
Mój xml - fragment
  1. <oferta>
  2. <id>TY067353</id>
  3. <param nazwa="dataaktualizacji" type="text">2016-08-29 11:05:38</param>
  4. <param nazwa="wojewodztwo" type="text">Pomorskie</param>
  5. <param nazwa="dzielnica" type="text"/>Kartuzy</param>
  6. <cena waluta="PLN">59900.00</cena>
  7. </oferta>


elementy param parsuję po kolei jako $oferta->oferta->param[1], $oferta->oferta->param[2], $oferta->oferta->param[...]
Jak pobrać konkretny<param> z użyciem 'nazwy'?
Pyton_000
$xml->xpath('//param[@nazwa="dzielnica"]');
mirobor
  1. <dzial><oferta>
  2. <id>TY067353</id>
  3. <param nazwa="dataaktualizacji" type="text">2016-08-29 11:05:38</param>
  4. <param nazwa="wojewodztwo" type="text">Pomorskie</param>
  5. <param nazwa="dzielnica" type="text"/>Kartuzy</param>
  6. <cena waluta="PLN">59900.00</cena>
  7. </oferta>
  8. </dzial>
  9. <dzial>
  10. <oferta>
  11. <id>TY067354</id>
  12. <param nazwa="dataaktualizacji" type="text">2016-08-19 11:05:38</param>
  13. <param nazwa="wojewodztwo" type="text">Pomorskie</param>
  14. <param nazwa="dzielnica" type="text"/>Kościerzyna</param>
  15. <cena waluta="PLN">531900.00</cena>
  16. </oferta>
  17. </dzial>


Mam problem, Jak to poprawnie wyświetlić w pętli foreach takiej jak ta:

  1.  
  2. foreach($dzial->dzial as $oferta) {
  3. $dataaktuaktualizacji = $oferta->xpath('//param[@nazwa="dataaktualizacji"]');
  4. echo $oferta->oferta->id . "<br />";
  5. echo $oferta->oferta->cena . "<br />";
  6.  
  7. }

W jaki sposób wyświetlić właściwy element tablicy: $dataaktuaktualizacji.
Pyton_000
echo (string)$dataaktualizacji;
mirobor
$dataaktualizacji pobiera tablicę. W jaki sposób wyświetlić właściwy element dla danego id?
(string)$dataaktualizacji jest pusty? Nic nie wyświetla dla powyższego xml'a.


Podbijam na konkretnym przykładzie. Fragment mojego xml'a.

  1. <dzial tab="lokale" typ="sprzedaz">
  2. <oferta>
  3. <id>121</id>
  4. <param nazwa="dataaktualizacji" type="text">2016-06-07 08:48:22</param>
  5. <param nazwa="dzielnica" type="text"/>
  6. <cena waluta="PLN">1500000.00</cena>
  7. </oferta>
  8. </dzial>
  9. <dzial tab="domy" typ="sprzedaz">
  10. <oferta>
  11. <id>122</id>
  12. <param nazwa="dataaktualizacji" type="text">2016-08-19 15:14:24</param>
  13. <param nazwa="dzielnica" type="text">Chwarzno-Wiczlino</param>
  14. <cena waluta="PLN">560000.00</cena>
  15. </oferta>
  16. </dzial>


i taki kod:

  1. $dataaktualizacji = $xml->xpath('//param[@nazwa="dataaktualizacji"]');
  2. $dzielnica = $xml->xpath('//param[@nazwa="dzielnica"]');
  3. foreach($xml->dzial as $oferta) {
  4. echo $oferta->oferta->id . "<br />";
  5. echo $oferta->oferta->cena . "<br />";
  6. echo $oferta->attributes()->tab. "<br />";
  7. echo $oferta->attributes()->typ. "<br />";
  8.  
  9. }


Jak w tej pętli wyświetlić odpowiednie elementy tablic $dataaktualizacji i $dzielnica dla danego id?
Rysh
Zdumpuj param pokaż jak to wygląda.
mirobor
  1. object(SimpleXMLElement)#6460 (32) { ["@attributes"]=> array(2) { ["nazwa"]=> string(16) "dataaktualizacji" ["type"]=> string(4) "text" } [0]=> string(19) "2016-08-05 13:16:36" [1]=> string(9) "Pomorskie" [2]=> object(SimpleXMLElement)#6459 (1) { ["@attributes"]=> array(2) { ["nazwa"]=> string(9) "dzielnica" ["type"]=> string(4) "text" } } [3]=> string(6) "Gowino" [4]=> string(8) "Kwiatowa" [5]=> object(SimpleXMLElement)#4290 (1) { ["@attributes"]=> array(2) { ["nazwa"]=> string(7) "n_geo_y" ["type"]=> string(5) "float" } } [6]=> object(SimpleXMLElement)#4291 (1) { ["@attributes"]=> array(2) { ["nazwa"]=> string(7) "n_geo_x" ["type"]=> string(5) "float" } } [7]=> object(SimpleXMLElement)#4292 (1) { ["@attributes"]=> array(2) { ["nazwa"]=> string(5) "wideo" ["type"]=> string(4) "text" } } [8]=> string(7) "8000.00" [9]=> object(SimpleXMLElement)#4293 (1) { ["@attributes"]=> array(2) { ["nazwa"]=> string(4) "opis" ["type"]=> string(4) "text" } } [10]=> string(11) "Anna Gronau" [11]=> string(26) "tyszkiewicz@tyszkiewicz.pl" [12]=> string(25) "58 558 53 53, 784 008 353" [13]=> string(9) "Budowlana" [14]=> string(1) "1" [15]=> string(1) "1" [16]=> string(1) "0" [17]=> string(1) "0" [18]=> string(39) "ofertynet-trzycity.pl_zs_TY063681_1.JPG" [19]=> string(39) "ofertynet-trzycity.pl_zs_TY063681_2.JPG" [20]=> string(39) "ofertynet-trzycity.pl_zs_TY063681_3.JPG" [21]=> string(39) "ofertynet-trzycity.pl_zs_TY063681_4.JPG" [22]=> string(39) "ofertynet-trzycity.pl_zs_TY063681_5.JPG" [23]=> string(39) "ofertynet-trzycity.pl_zs_TY063681_6.JPG" [24]=> string(39) "ofertynet-trzycity.pl_zs_TY063681_7.JPG" [25]=> string(39) "ofertynet-trzycity.pl_zs_TY063681_8.JPG" [26]=> string(39) "ofertynet-trzycity.pl_zs_TY063681_9.JPG" [27]=> string(40) "ofertynet-trzycity.pl_zs_TY063681_10.JPG" [28]=> string(40) "ofertynet-trzycity.pl_zs_TY063681_11.JPG" [29]=> string(40) "ofertynet-trzycity.pl_zs_TY063681_12.JPG" [30]=> string(40) "ofertynet-trzycity.pl_zs_TY063681_13.png" }
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.