Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Edycja plików XML - SimpleXML
pitu
post 2.06.2011, 13:46:11
Post #1





Grupa: Zarejestrowani
Postów: 476
Pomógł: 96
Dołączył: 10.04.2008
Skąd: Koszalin

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


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 ...


--------------------
HTML/CSS/JS: jsfiddle
SQL: sqlfiddle
Go to the top of the page
+Quote Post
mat-bi
post 2.06.2011, 13:50:49
Post #2





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


Jak dobrze wiem, główny węzeł jest pomijany przy tym, spróbuj
Go to the top of the page
+Quote Post
pitu
post 2.06.2011, 14:02:28
Post #3





Grupa: Zarejestrowani
Postów: 476
Pomógł: 96
Dołączył: 10.04.2008
Skąd: Koszalin

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


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.


--------------------
HTML/CSS/JS: jsfiddle
SQL: sqlfiddle
Go to the top of the page
+Quote Post
mortus
post 2.06.2011, 14:09:37
Post #4





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


W if-ie:
  1. $ogloszenie->marka = "Opel";
Go to the top of the page
+Quote Post
pitu
post 2.06.2011, 14:58:12
Post #5





Grupa: Zarejestrowani
Postów: 476
Pomógł: 96
Dołączył: 10.04.2008
Skąd: Koszalin

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


Dzięki mortus.


--------------------
HTML/CSS/JS: jsfiddle
SQL: sqlfiddle
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:36