Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > DOM
DOM Forum d'entraide pour l'extension DOM permettant de manipuler des documents XML en PHP 5 (approche DOM). Avant de poster -> tutoriels DOM
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/08/2007, 05h31   #1
Nouveau Membre du Club
 
Avatar de eexit
 
Étudiant
Inscription : juillet 2007
Messages : 61
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2007
Messages : 61
Points : 35
Points : 35
Par défaut [DOM] Mettre à jour une données dans un noeud

Bonjour,

Je souhaiterais mettre à jour une donnée dans un noeud mais je ne sais pas vraiment comment faire :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
function set($user_id, $user_data)
	{
		//get the user node
		$result = $this->xpath->query('//*/users['.$user_id.']/node');
		$node = $result->item(0); //renvoie le bon noeud
 
		$this->xml->replaceData($user_data); //comment faire??
 
 
		//save XML file
		$this->xml->save($this->file_name);
	}
Dans cette fonction, j'effectue une requête Xpath pour récuperer le noeud que je veux modifier ($node) mais après, je ne sais pas comment appliquer $user_data à ce noeud en effaçant la valeur précédente.

Si vous savez, j'en serais ravi !

Merci.
eexit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 11h30   #2
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Tu me sembles bien parti. J'imagine que tu as vu la doc ?
http://fr2.php.net/manual/fr/functio...eplacedata.php

Quelque chose comme ceci :
Code :
$node->replaceData(OFFSET, strlen($user_data), $user_data);
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 11h44   #3
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Vous avez accès à l'attribut nodeValue des noeuds (DOMNode), il vous suffirait de faire quelque chose comme :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$dom = new DomDocument;
$dom->formatOutput = TRUE;
$dom->preserveWhiteSpace = FALSE;
$dom->load('users.xml');
 
$xpath = new DomXPath($dom);
$users = $xpath->query('/root_users/user[user_id = "1"]/user_pseudo');
foreach ($users as $user) { # L'expression XPath renvoyant une DomNodeList
    $user->nodeValue = 'toto';
}
 
header('content-type: text/plain');
echo $dom->saveXML();
Sachant que j'ai repris la structure XML que vous aviez donné dans l'une de vos précédentes discussions.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 14h23   #4
Nouveau Membre du Club
 
Avatar de eexit
 
Étudiant
Inscription : juillet 2007
Messages : 61
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2007
Messages : 61
Points : 35
Points : 35
Bonjour,


Merci pour vos réponse.
Tout d'abord, mon code est correcte mais je n'ai pas voulu utiliser un foreach() car je récupère qu'une seule donnée.

Ok, voila solution pour modifier la valeur d'un noeud sans utiliser de foreach :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
<?php
function set($user_id, $user_data)
	{
		//get the user node
		$result = $this->xpath->query('//*/users['.$user_id.']/node');
		$node = $result->item(0)->nodeValue = $user_data;
 
		//save XML file
		$this->xml->save($this->file_name);
	}
?>
Je vous remercie beaucoup
eexit est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h06.


 
 
 
 
Partenaires

Hébergement Web