Newsgroup: it.comp.www.php
Titolo: leggere, scrivere e modificare valori all'interno di un file xml

Ciao a tutti,
conoscete una classe bella e pronta in php che mi permetta di leggere,
scrivere e modificare valori all'interno di un file xml??
Mi piacerebbe una cosa del tipo...
una funzione che mi vada a cercare e prendere il valore all'interno di
un nodo o addirittura un valore del tag stesso
e una funzione che mi vada a modificare il valore all'interno di un
nodo che gli passo io

 scrivere e modificare valori all'interno di un file xml??
Provato su 
php.net
? non vorrei dire una fesseria ma mi sembra che php5
preveda qualcosa di pronto.
In alternativa guarda su 
www.phpclasses.org
 o 
hotscripts.com

 scrivere e modificare valori all'interno di un file xml??
Non puoi lavorare direttamente sul file, ma con DOMDocument lo carichi in 
memoria, ci fai quello che devi farci, e poi lo risalvi su disco, usando 
le funzioni standard per l'accesso al DOM, appunto.
Se usi PHP4 c'e` DOMxml che e` quasi equivalente, ma e` deprecato (e PHP4 
stesso e` deprecato, quindi passa al 5 e usa DOM).
Bye.


grazie per la risposta... io uso php5 e avevo già dato un'acchiata al
dom solo che le guide su 
php.net
 o che ho trovato su altri siti, non
sono molto chiare e non riesco a capire cosa bisogna fare per andare a
reperire un valore o modificarlo....sapete indicarmi una guida
chiara??
grazie

 reperire un valore o modificarlo....sapete indicarmi una guida chiara??
Detto in soldoni:
$dom = DOMDocument::load("file.xml");
$nodopippo = $dom->getElementById("pippo");
$nodipluto = $dom->getElementsByName("pluto");
foreach ($nodipluto as $nodopluto) {
 print $nodopluto->nodeValue;
}
Guide vere e proprie non ne conosco, ma da queste 5 righe dovresti capire 
almeno vagamente come funziona.
Bye.


ottengo questo errore
Call to undefined method DOMDocument::getElementsByName()
allora, io ho un file xml strutturato cosi
nome_file -> file.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<mosinstall type="module">
<param name="login_message" type="radio" default="0" label="Messaggio
Login" description="">
<option value="0">Nascondi</option>
<option value="1">Mostra</option>
</param>
<param name="logout_message" type="radio" default="0" label="Messaggio
Logout" description="">
	<option value="0">Nascondi</option>
	<option value="1">Mostra</option>
</param>
</mosinstall>
in questo file, ad esempio, voglio sapere qual'è il valore di
deault(che in questo caso e 0) del tag param con name "login_message"
grazie per il tuo tempo

 wrote:

Tra varie prove sono riuscito ad ottenere quello che volevo io... ho
questo file xml
<?xml version="1.0" encoding="iso-8859-1"?>
<mosinstall type="module">
<param name="login_message" type="radio" default="06" label="Messaggio
Login" description="">
<option value="0">Nascondi</option>
<option value="1">Mostra</option>
</param>
<param name="logout_message" type="radio" default="0" label="Messaggio
Logout" description="">
        <option value="0">Nascondi</option>
        <option value="1">Mostra</option>
</param>
</mosinstall>
mentre da php eseguo
$dom = new DOMDocument();
$dom->validateOnParse = true;
$dom->load("xml_2.xml");
$xpath = new DOMXPath($dom);
$query = '//param';
$entries = $xpath->query($query);
foreach ($entries as $entry) {
	if ($entry->getAttribute("name") == "login_message"){
		echo $entry->getAttribute("default");
	}
}
in questo modo ottengo il valore di default del param name
"login_message"
adesso se invece volessi apportare delle modifiche all'attributo
default, e da 0 farlo diventare 1 come devo fare??
avevo pensato ad una cosa del genere ma non funziona
$dom = new DOMDocument();
$dom->validateOnParse = true;
$dom->load("xml_2.xml");
$xpath = new DOMXPath($dom);
$query = '//param';
$entries = $xpath->query($query);
foreach ($entries as $entry) {
	if ($entry->getAttribute("name") == "login_message"){
		$entry->setAttribute("dafault", "1");
		$dom->saveXML($entry);
		echo $entry->getAttribute("default");
	}
}


come non detto ho risolto anche quello...
lo scrivo anche qui come ho fatto cosi può essere utile anche ad
altri,
$dom = new DOMDocument();
$dom->validateOnParse = true;
$dom->load("xml_2.xml");
$xpath = new DOMXPath($dom);
$query = '//param';
$entries = $xpath->query($query);
foreach ($entries as $entry) {
        if ($entry->getAttribute("name") == "login_message"){
                $entry->setAttribute("dafault", "1");
                $dom->save("xml_2.xml"); // ho solo dovuto specificare
il file di output
