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 28/01/2007, 10h47   #1
sla
Invité de passage
 
Inscription : août 2003
Messages : 3
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 3
Points : 0
Points : 0
Par défaut [DOM] Localiser un noeud pour l'ajout

Bonjour,
je débute en xml et mon fichier ressemble à ceci:

Code :
1
2
3
<Liste>
<Music URL="http://www......" >Le titre du morceau</Music>
</Liste>
Et j'ai un fichier php qui pour l'instant me rajoute le noeud Music mais pas du tout là où je voudrais (il se rajoute après les balises <Liste>) je ne sais pas comment lui dire d'aller à l'intérieur de ces balises. La personne doit pouvoir rajouter autant de musique qu'elle veut via un formulaire (php) et je vois partout que pour l'ajout de noeud je dois utiliser DOM que je ne connais pas du tout.
Du coup j'ai quelques questions:
j'ai installé EasyPhp 2.0 beta qui comporte php 5 dois-je tout de même installer une librairie ou y est-elle déjà ? Dois-je modifier le php.ini ?
Auriez-vous une solution "plus simple" pour cet ajout ?
Je vous remercie pour votre aide.
Sophie.
sla est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2007, 11h10   #2
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
la méthode getElementsByTagName de DomElement pour sélectionner liste

http://www.php.net/manual/fr/functio...sbytagname.php


la méthode appendChild de DomNode pour ajouter un noeud fils à un noeud

http://www.php.net/manual/fr/functio...ppendchild.php
__________________
Evitez les MP pour les questions techniques... il y a des forums
Contributions sur DVP : Mes Tutos | Mon Blog
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2007, 11h45   #3
sla
Invité de passage
 
Inscription : août 2003
Messages : 3
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 3
Points : 0
Points : 0
merci pour cette réponse ultra rapide !
Mais comme je vous dis je suis vraiment une débutante en xml et je me permet de poster mon fichier php car j'iumagine qu'il y a plus que ces 2 fonctions à ajouter car pour l'instant j'ai ces erreurs : Undefined variable doc-xml et Call to a member function getElementsByTagName() on a non object.
merci beaucoup
Code php :
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Document sans titre</title>
<style type="text/css">
<!--
.Style1 {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-weight: bold;
}
.Style2 {font-family: Verdana, Arial, Helvetica, sans-serif}
-->
</style>
</head>
 
<body>
<?php
if(isset($_POST['action'])) $action=$_POST['action']; else $action="inconnue";
if($action=="ecriture") {
############################################################ECRITURE
//Initialisation des variables envoyées par le formulaire
if(isset($_POST['URL'])) $URL=$_POST['URL']; else $URL="URL inconnu";
if(isset($_POST['titre'])) $titre=$_POST['titre']; else $titre="titre inconnu";
//---------------------------------
 $fp= fopen("liste.xml", "a");//ouverture du fichier XML
 
$Liste=$doc_xml->getElementsByTagName('Liste');
foreach($Liste as $Liste){
 
 $fichier_xml ="\t<Music URL=\"$URL\">$titre</Music>\r\n";
}
 
 
 //-------------------------------------------------------------------------------------
 fwrite($fp, $fichier_xml);//ecriture du fichier
 fclose($fp);//fermeture du fichier
// header("Location:liste.xml");
############################################################FIN D'ECRITURE
}//fin du IF
?>
   </p>
<form name="form1" method="POST" action="ecritureXml3.php">
  <table width="500" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#000000">
    <tr>
      <td><div align="center">
          <table width="496" border="0" cellspacing="0" cellpadding="5">
            <tr>
              <td colspan="2"><div align="center" class="Style1">ECRITURE
                  D'UN FICHIER XML </div></td>
            </tr>
            <tr>
              <td width="248"><div align="right" class="Style2">Titre :
                  </div></td>
              <td width="248"><input name="titre" type="text" id="titre" ></td>
            </tr>
            <tr>
              <td><div align="right" class="Style2">Fichier : </div></td>
              <td><input type="file" name="URL" id="URL" ></td>
            </tr>
 
            <tr>
              <td colspan="2"><div align="center">
                  <input type="submit" name="Submit" value="Envoyer">
                  <input name="action" type="hidden" id="action" value="ecriture">
              </div></td>
            </tr>
          </table>
      </div></td>
    </tr>
  </table>
  <p align="center">&nbsp;</p>
  <p>&nbsp;</p>
</form>
 
<a href="liste.xml" > Voir le fichier XML avant l'&eacute;criture </a>
</body>
</html>
sla est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2007, 12h29   #4
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
il faut charger le fichier avec DomDocument::load()
http://www.php.net/manual/fr/functio...ument-load.php

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
<?php
$filename = 'liste.xml';
$doc = new DOMDocument();
$doc->load($filename);
$nodes_liste = $doc->getElementsByTagName("liste");
$liste = $nodes_liste[0];
 
$music = $doc->createElement("music");
 
$url = $doc->createAttribute("url");
$url->appendChild($doc->createTextNode($txt_url));
$music->appendChild($url);
 
$music->appendChild($doc->createTextNode($txt_titre););
 
$liste->appendChild($music);
$doc->save($filename);
?>

ajoutes les tests... et vérifies les détails (je n'ai pas testé)
__________________
Evitez les MP pour les questions techniques... il y a des forums
Contributions sur DVP : Mes Tutos | Mon Blog
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2007, 20h16   #5
sla
Invité de passage
 
Inscription : août 2003
Messages : 3
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 3
Points : 0
Points : 0
je te remercie c'est tout bon je pense mais je reste à me demander si je ne dois pas installer de librairie supplémentaire car je reste avec cette erreur : Cannot instantiate non existant class : domdocument in ....
Alors ce que j'ai fais c'est que j'ai installé easyphp 1.8 puis j'ai installer la derniere version de php de ce site :http://www.php.net/downloads.php en modifiant ce qu'il fallais dans l'httpd.conf et l'extension domxml dans le php.ini.
Et si je comprend bien ce qu'ils nous disent sur ce site http://www.php.net/manual/fr/ref.domxml.php rien n'est nécessaire comme supplément ...
hum ... auriez-vous une idée ?
merci merci
Sophie.
sla est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 08h38   #6
Membre chevronné
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 790
Points : 790
Sauf erreur, DomDocument, c'est du PHP5 non?
haltabush 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 20h34.


 
 
 
 
Partenaires

Hébergement Web