Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: SimpleXML - Edycja pliku
Forum PHP.pl > Forum > XML, AJAX > XML
LeNy
Witam. Posiadam bazę xml, w której mam dane, lecz nie wiem jak mogę je edytować z poziomu PHP. Czytałem różne tematy, lecz nie znalazłem interesującej mnie odpowiedzi.

Moja baza wygląda tak:
  1. <bazadanych>
  2. <host>moj_host.com</host>
  3. <user>ktos</user>
  4. <dbname>nazwa_bazy</dbname>
  5. <password>pass</password>
  6. </bazadanych>


Chcę np zmienić wartość <password></password> na inną, lecz nie wiem jak.
Proszę o pomoc wstydnis.gif
cudny
  1. $xml = simplexml_load_file('bazadanych.xml');
  2. echo '<pre>';
  3. print_r($xml);
  4. echo '</pre>';


http://www.php.net/manual/pl/book.simplexml.php
http://www.w3schools.com/xpath/

Leny - nie jesteś może z Kielc wink.gif ?
LeNy
Nie, nie jestem z Kielc worriedsmiley.gif

Co do tematu, to funkcje simplexml_load_file znam dobrze, lecz chciałbym edytować dane a nie je pobierać dry.gif
cudny
funkcja asXML('sciezka_do_pliku.xml');

A xpath możesz użyć do wyszukania interesującej cię danej.
Ogólnie jak załadujesz xml do zmiennej to zmień jej wartość, a potem daj asXML();
LeNy
Chodzi o coś takiego? wstydnis.gif
  1. $xml = simplexml_load_file('test.xml');
  2. $xml->host = "jakas_nazwa.com";
  3. $xml->host->asXML();
cudny
Nie.
Musisz mieć prawa zapisu dla pliku xml.
$xml->saXML('plik.xml'); to funkcja, która zapisuje do pliku zawartość objektów $xml;

Ogólnie:
ładujesz xml do $xml
  1. $xml = simplexml_load_file('test.xml');

zmieniasz tam to co cię interesuje
  1. $xml[0]->costam->attributes()->value = 'jakaś wartość';

i teraz zrób sobie coś takiego:
  1. $xml->asXML('test.xml');


Tam gdzie masz index.php utworzył ci się plik test.xml
jakbyś dał nazwe i ścieżkę pliku wewnątrz asXML(); to nadpisało by ci satry plik. Ot cała filozofia wink.gif
LeNy
Sorki, że po takim długim czasie odpisuje, ale wcześniej nie miałem jak nawet przetestować czy to co napisałeś zadziała. Niestety nie zapisują się zmiany. Ustawiłem chmody na 777 a kod wygląda tak:
  1. $xml = simplexml_load_file('../plik.xml');
  2. $xml[0]->news_file->attributes()->value = $_POST['news'];
  3. $xml->asXML('../plik.xml');


Proszę o pomoc smile.gif

//EDIT:
Poradziłem sobie, użyłem funkcji:
  1. file_put_contents($file, $xml->asXML());


Dzięki, cudny za pomoc specool.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-2024 Invision Power Services, Inc.