Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> SimpleXML - Edycja pliku
LeNy
post
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 4
Dołączył: 17.01.2009

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


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 (IMG:style_emoticons/default/wstydnis.gif)
Go to the top of the page
+Quote Post
cudny
post
Post #2





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


  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 (IMG:style_emoticons/default/wink.gif) ?

Ten post edytował cudny 19.03.2012, 10:03:03
Go to the top of the page
+Quote Post
LeNy
post
Post #3





Grupa: Zarejestrowani
Postów: 102
Pomógł: 4
Dołączył: 17.01.2009

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


Nie, nie jestem z Kielc (IMG:style_emoticons/default/worriedsmiley.gif)

Co do tematu, to funkcje simplexml_load_file znam dobrze, lecz chciałbym edytować dane a nie je pobierać (IMG:style_emoticons/default/dry.gif)
Go to the top of the page
+Quote Post
cudny
post
Post #4





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


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();
Go to the top of the page
+Quote Post
LeNy
post
Post #5





Grupa: Zarejestrowani
Postów: 102
Pomógł: 4
Dołączył: 17.01.2009

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


Chodzi o coś takiego? (IMG:style_emoticons/default/wstydnis.gif)
  1. $xml = simplexml_load_file('test.xml');
  2. $xml->host = "jakas_nazwa.com";
  3. $xml->host->asXML();
Go to the top of the page
+Quote Post
cudny
post
Post #6





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


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 (IMG:style_emoticons/default/wink.gif)

Ten post edytował cudny 19.03.2012, 16:31:44
Go to the top of the page
+Quote Post
LeNy
post
Post #7





Grupa: Zarejestrowani
Postów: 102
Pomógł: 4
Dołączył: 17.01.2009

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


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 (IMG:style_emoticons/default/smile.gif)

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


Dzięki, cudny za pomoc (IMG:style_emoticons/default/specool.gif)

Ten post edytował LeNy 21.03.2012, 23:15:07
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: 23.08.2025 - 10:26