Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > DOMXML
DOMXML Forum d'entraide pour l'extension DOMXML permettant de manipuler des documents XML en PHP 4 (approche DOM). Avant de poster -> tutoriels DOMXML
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 07/07/2006, 15h19   #1
Membre régulier
 
Inscription : juillet 2004
Messages : 274
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 274
Points : 96
Points : 96
Envoyer un message via MSN à aldo-tlse
Par défaut [DOMXML] Modification d'un fichier XML en php

Bonjour,
je suis en train de tester l'API DOM
http://www.lacentraleinternet.com/rk...l.classes.html

j'aimerai juste savoir comment faire modifier le bon tag

voila mon fichier xml :
Code XML :
1
2
3
4
5
6
7
<?xml version="1.0" encoding="iso-8859-1" ?> 
    <libelles>
    <libelle><cle>titre</cle><valeur>Bienvenu</valeur><langue>Fr</langue></libelle>
    <libelle><cle>menu.accueil</cle><valeur>Accueil</valeur><langue>Fr</langue></libelle>
    <libelle><cle>liste.nbElements</cle><valeur>Nombre d'éléments : </valeur><langue>Fr</langue></libelle>
    <libelle><cle>actions</cle><valeur>Actions</valeur><langue>Fr</langue></libelle>
</libelles>

et mon script php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$file_name = "./../ressources/libelles.xml";
	$file = dirname(__FILE__).$file_name;
 
	$dom = domxml_open_file($file,DOMXML_LOAD_DONT_KEEP_BLANKS) or die ("Impossible d'ouvrir le fichier XML !"); 
 
	if(!is_object($dom)) {
		return "Le document XML n'est pas 'Well Formed' !"; 
	}
 
	$root = $dom->document_element();
	$libelles = $root->get_elements_by_tagname("libelle");
 
	// Recherche du noeud dont la cle est $cle
	$nd = null;
	for ($i=0; $i<count($libelles); $i++) {
		if ($libelles[$i]->cle->?? == $cle) {
			$nd = $libelles[$i];
		}
	}
	.....

Quelle méthode dois-je utiliser pour connaitre la valeur du noeud : $libelles[$i]->cle ?
et pour ecrire la nouvelle valeur dans $libelles[$i]->valeur ?

Merci d'avance
aldo-tlse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 16h02   #2
Expert Confirmé
 
Avatar de Maxoo
 
Maxime Pasquier
Expert PHP
Inscription : novembre 2004
Messages : 2 126
Détails du profil
Informations personnelles :
Nom : Maxime Pasquier
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Expert PHP
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2004
Messages : 2 126
Points : 2 602
Points : 2 602
Citation:
aldo-tlse
Membre habitué
un membre habitué au forum devrait savoir qu'il faut utiliser la balise CODE !!
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur.
Mon espace Développez : mes Créations.


Rencontre & Carte des Membres de Developpez.com, version 3.0
Maxoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 16h18   #3
Membre régulier
 
Inscription : juillet 2004
Messages : 274
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 274
Points : 96
Points : 96
Envoyer un message via MSN à aldo-tlse
c'est ce qu'il y a de plus important pour toi ?
je suis bloqué à cause de ce pb
en balisant mon message, tu réussiras à m'aider ?


je suis habitué à utiliser le forum de flash, et apparemment les tags pour baliser les messages sont différents, alors je ne me suis pas préoccuppé de ca

voila tout
aldo-tlse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 16h29   #4
Expert Confirmé
 
Avatar de Maxoo
 
Maxime Pasquier
Expert PHP
Inscription : novembre 2004
Messages : 2 126
Détails du profil
Informations personnelles :
Nom : Maxime Pasquier
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Expert PHP
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2004
Messages : 2 126
Points : 2 602
Points : 2 602
Citation:
Envoyé par aldo-tlse
c'est ce qu'il y a de plus important pour toi ?
je suis bloqué à cause de ce pb
en balisant mon message, tu réussiras à m'aider ?
plus, car j'aurai envie de lire ton message, au lieu de passer dessus ...

Citation:
Envoyé par aldo-tlse
je suis habitué à utiliser le forum de flash, et apparemment les tags pour baliser les messages sont différents, alors je ne me suis pas préoccuppé de ca
sur le forum flash de developpez.net ? c'est toujours la balise Code ...
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur.
Mon espace Développez : mes Créations.


Rencontre & Carte des Membres de Developpez.com, version 3.0
Maxoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 18h28   #5
Membre régulier
 
Inscription : juillet 2004
Messages : 274
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 274
Points : 96
Points : 96
Envoyer un message via MSN à aldo-tlse
alors j'ai trouvé une solution,
mais je ne comprends pas pourquoi la méthode set_content($valeur) n'écrase pas l'ancienne valeur (mais la concatène)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
  $file_name = "./../ressources/libelles.xml";
  $file = dirname(__FILE__).$file_name;
 
  $dom = domxml_open_file($file,DOMXML_LOAD_DONT_KEEP_BLANKS) or die ("Impossible d'ouvrir le fichier XML !"); 
 
  if(!is_object($dom)) {
  	return "Le document XML n'est pas 'Well Formed' !"; 
  }
 
  $dom->formatOutput = true;
  $root = $dom->document_element();
  $libelles = $root->get_elements_by_tagname("libelle");
 
  for ($i=0; $i<count($libelles); $i++) {
  	$cles = $libelles[$i]->get_elements_by_tagname("cle");
 
  	if ($cles[0]->get_content() == $cle) {
    $nd = $libelles[$i];
    $valeurs = $libelles[$i]->get_elements_by_tagname("valeur");
    $valeurs[0]->set_content($valeur);
  	}
  }
 
 
  //On récupere la chaine XML de l'objet DOM
  $chaine_XML = $dom->dump_mem(true, "iso-8859-1");
 
  //Enregistrement dans le fichier
  $id_fichier = fopen($file_name, "w");
  rewind($id_fichier);
  fwrite($id_fichier, $chaine_XML);
  fclose($id_fichier);
aldo-tlse est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h20.


 
 
 
 
Partenaires

Hébergement Web