Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Edycja plików XML - SimpleXML
Forum PHP.pl > Forum > PHP
pitu
Witam

Próbuję już kilka godzin jak zmienić wartość w pliku .XML i niestety nie mogę sobie poradzić. Przeszukałem kilka stron i mam taki oto kod:


  1. $xml = simplexml_load_file('baza/ogloszenia.xml');
  2.  
  3. foreach($xml->ogloszenia->ogloszenie as $ogloszenie)
  4. {
  5. if ($ogloszenie['nr'] == "3")
  6. {
  7. $ogloszenie['marka'] = "Opel";
  8. break;
  9. }
  10. }
  11.  
  12. file_put_contents('baza/ogloszenia.xml', $xml->asXml());


Plik .xml
  1. <ogloszenia>
  2. <ogloszenie nr="3">
  3. <marka>Deawoo</marka>
  4. <model>xxxx</model>
  5. <typ>xxxx</typ>
  6. <zdjecia>
  7. <zdjecie>images/3_1.jpg</zdjecie>
  8. <zdjecie>images/3_2.jpg</zdjecie>
  9. <zdjecie>images/3_3.jpg</zdjecie>
  10. <zdjecie>images/3_4.jpg</zdjecie>
  11. </zdjecia>
  12. <cena>2000</cena>
  13. <wojewodztwo>xxxx</wojewodztwo>
  14. <rocznik>1991</rocznik>
  15. <silnik>xxxx</silnik>
  16. <opis>xxxx</opis>
  17. <sprzedajacy id="2"/>
  18. </ogloszenie>
  19. </ogloszenia>


Na jeden stronie znalazłem podobne rozwiązanie i autor napisał, że u niego działa. U mnie przy pętli wywala błąd:
  1. Warning: Invalid argument supplied for foreach() in ...
mat-bi
Jak dobrze wiem, główny węzeł jest pomijany przy tym, spróbuj
pitu
Dzięki było dokładnie tak jak napisałeś. Mam jednak problem w powyższym kodzie, fragment:
  1. $ogloszenie['marka'] = "Opel";


Dodaje atrybut do znacznika ogloszenie, a zamierzam zmienić wartość znacznika <marka>

Próbowałem tak:
  1. $xml->ogloszenia->ogloszenie->marka = "Opel";


Lecz dodaje mi znaczniki na końcu, a nie edytuje ten przy ID = 3.
mortus
W if-ie:
  1. $ogloszenie->marka = "Opel";
pitu
Dzięki mortus.
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.