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 13/07/2007, 11h16   #1
Invité régulier
 
Inscription : mai 2007
Messages : 18
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 18
Points : 8
Points : 8
Par défaut [DOM] Problème de modification de xml

Boujour,


j'ai un fichier xml a modifier qui ressemble a ca :

Code XML :
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
 
<iri>
	<head>
		<meta name="id" content="kia_gout"/>
	</head>
 
  <body>
    <ensembles>
      <ensemble id="xxx" >
        <decoupage id="de_PPP" >
          <elements>
 
            <element id="elD_1" order="" prev="" ... />
            .... des centaines de ligne de ce genre a modifier
               => c'est cette liste de noeu que jaimerais récupéré pour modifier une partie de leurs attribut dont l'id
 
          </elements>
        </decoupage>
      </ensemble>
    </ensembles>
 
    <medias>
 
        <decoupage id="de_PPP" >
 
     </medias>
  </body>
</iri>

Et j'aimerais avec dom modifier certains attributs des balises <element> petite filles du noeud decoupage dont l'id est égale à "de_FPP"

Mais le problème c'est que je veux récupérer le noeud "<decoupage id="de_PPP" >" qui est contenu dans les balises <ensembles> et pas le noeud du même nom qui est contenu plus tard dans le fichier xml (entre les balises <media>)!

C'est pour cela que les méthodes que "getElementsByTagName" et "getAttribute" ne marchent pas car elles rendent plusieurs résultats

Ou bien si je leurs dit que ces méthodes doivent s'appliquer à partir de tel noeud, ça me renvoie le message d'erreur suivant : "Fatal error: Call to a member function getAttribute() on a non-object"

Alors si quelqu'un a une technique qui permettent de récupérer les bons éléments, au moins en théorie ce serait cool!

parce que actuellement j'ai aucun code qui marche!
tiliut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2007, 11h53   #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
Utilisez une expression XPath pour cibler cet élément précis :
Code :
/iri/body/ensembles/ensemble/decoupage[@id = "de_PPP"]
Si je n'ai pas fait d'erreur.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2007, 12h52   #3
Invité régulier
 
Inscription : mai 2007
Messages : 18
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 18
Points : 8
Points : 8
Citation:
Envoyé par julp
Utilisez une expression XPath pour cibler cet élément précis :
Code :
/iri/body/ensembles/ensemble/decoupage[@id = "de_PPP"]
Si je n'ai pas fait d'erreur.
Ca marche ton truc, mais c'est du xPath qui fonctionne quand on utlise un traitement par feuille de style xsl et xslt, dans mon cas je cherche a faire le traitement grace a dom et sans passer par des feuilles de style!

D'un autre coté ce que je demande a dom est peut etre au dessus de ces moyen...
tiliut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2007, 13h29   #4
Invité régulier
 
Inscription : mai 2007
Messages : 18
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 18
Points : 8
Points : 8
C en grande partie resolue!

a force de boucle foreach, de if et de getElementsByTagName je suis arrivé selectionné les bons éléments!

Par contre je sais pas comment jai éviter les boucles infini vu que jai 7 boucles imbrique les une dans les autres...
tiliut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2007, 13h49   #5
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
Citation:
Envoyé par tiliut
Ca marche ton truc, mais c'est du xPath qui fonctionne quand on utlise un traitement par feuille de style xsl et xslt, dans mon cas je cherche a faire le traitement grace a dom et sans passer par des feuilles de style!

D'un autre coté ce que je demande a dom est peut etre au dessus de ces moyen...
Elle sert à quoi à votre avis la classe DomXPath (et ses méthodes) qui fait partie de l'extension en question ?
julp 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 16h59.


 
 
 
 
Partenaires

Hébergement Web