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 26/10/2007, 18h18   #1
Membre régulier
 
Étudiant
Inscription : février 2007
Messages : 378
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Canada

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2007
Messages : 378
Points : 90
Points : 90
Par défaut [DOM] Ajout de nœud

Hi,

j'ai un fichier XML de cette forme :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<projets>
<struct>
	<id>1</id>
	<nom>...</nom>	
	<description>...</description>
	<pageWeb>www</pageWeb>
</struct>
<struct>
	<id>2</id>
	<nom>...</nom>	
	<description>.../description>
	<pageWeb>www</pageWeb>
</struct>
<struct>
	<id>3</id>
	<nom>...</nom>	
	<description>...</description>
	<pageWeb>www</pageWeb>
</struct>
 
</projets>

et j'ai un code pour ajouter un noeud , le voila :

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
$dom = new DomDocument();	
	$dom->preserveWhiteSpace = FALSE;
	$dom->formatOutput = TRUE;
	$dom->load('projets.xml');
	
	$nouveauproj = $dom->createElement("struct");
	$projet= $dom->getElementByTagName("projets")->item(0);//la ligne qui crée l'erreur
	$projet->appendChild($nouveauproj);
	$id = $dom->createElement("id");
	$nom = $dom->createElement("nom");
	$desc = $dom->createElement("description");
	$pW = $dom->createElement("pageWeb");
	$id->setAttribute($_POST['id']);
	$nom->setAttribute($_POST['nom']);
	$desc->setAttribute($_POST['description']);
	$id->setAttribute($_POST['pageWeb']);
	
	$nouveauproj->appendChild($id);
	$nouveauproj->appendChild($nom);
	$nouveauproj->appendChild($desc);
	$nouveauproj->appendChild($pW);
	 
	// Sauvegarde
	$dom->save('projets.xml');

la ligne en rouge me crée cette erreur :
Fatal error: Call to undefined method DOMDocument::getElementByTagName() in C:\Documents and Settings\mo\Mes documents\html\ajproj.php on line 27


et rien n'est ajouté dans le fichier xml ... avez vous une idée sur l'erreur ?


merci



...
Mo_Poly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2007, 18h20   #2
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
Oh oui, le nom de la méthode est faux : DOMDocument->getElementsByTagName()
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2007, 18h54   #3
Membre régulier
 
Étudiant
Inscription : février 2007
Messages : 378
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Canada

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2007
Messages : 378
Points : 90
Points : 90



et encore un pour le resultat que j'ai obtenu , voici le noeud qui a été ajouté:

Code :
1
2
3
4
5
6
 <struct>
    <id id="4" pageWeb="www"/>
    <nom nom="projet"/>
    <description description="ce projet n'existe pas!"/>
    <pageWeb/>
  </struct>
pourquoi le code que j'ai montré dans le message precedant (cette fois je n'ai pas oublié le s ) ne donne pas ce que je veux

ce que je voulais c'est ca :

Code :
1
2
3
4
5
6
 <struct>
    <id>4</id>
    <nom>projet</nom>
    <description>Ce projet n'existe pas</description>
    <pageWeb>www</pageWeb>
  </struct>





...
Mo_Poly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2007, 19h34   #4
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
Si vous créez des attributs au lieu de noeuds textuels, ça me paraît normal :
Code :
1
2
3
4
5
6
7
8
	$id = $dom->createElement("id");
	$nom = $dom->createElement("nom");
	$desc = $dom->createElement("description");
	$pW = $dom->createElement("pageWeb");
	$id->setAttribute($_POST['id']);
	$nom->setAttribute($_POST['nom']);
	$desc->setAttribute($_POST['description']);
	$id->setAttribute($_POST['pageWeb']);
Devrait être :
Code :
1
2
3
4
	$id = $dom->createElement('id', $_POST['id']);
	$nom = $dom->createElement('nom', $_POST['nom']);
	$desc = $dom->createElement('description', $_POST['description']);
	$pW = $dom->createElement('pageWeb', $_POST['pageWeb']);
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2007, 19h41   #5
Membre régulier
 
Étudiant
Inscription : février 2007
Messages : 378
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Canada

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2007
Messages : 378
Points : 90
Points : 90
et un pour finir

c'est reglé merci


...
Mo_Poly 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 15h53.


 
 
 
 
Partenaires

Hébergement Web