IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[SimpleXML] Ajout d'une balise


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 38
    Par défaut [SimpleXML] Ajout d'une balise
    Bonjour a tous,
    j'ai un problème d'ajouter un fils dans mon fichier.xml

    mon fichier est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <users>
    	<user id="1">
    		<nom>marie</nom>
    		<mail>m@h.c</mail>
    		<cours id="c1">
    			<responsable_cours> test responsable</responsable_cours>
    		</cours>
            </user>
    	<user id="test">
    		<nom>sebastien</nom>
    		<mail>s@h.c</mail>
    	</user>
    </users>
    grâce a un script, j'arrive a ajouter des balises dans <user></user>:
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <user id="1">
    		<nom>marie</nom>
    		<mail>m@h.c</mail>
                    <tele>12345</tele>          (balise ajoutée)
    		<cours id="c1">
    			<responsable_cours> test responsable</responsable_cours>
    		</cours>
            </user>
    mon problème c'est de pouvoir ajouter un e balise "titre" a la balise "cours".
    mon fichier de sortie doit avoir cette forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <users>
    	<user id="1">
    		<nom>marie</nom>
    		<mail>m@h.c</mail>
    		<cours id="c1">
    			<responsable_cours> test responsable</responsable_cours>
                            <titre>cours1</titre>
    		</cours>
            </user>
    	<user id="test">
    		<nom>sebastien</nom>
    		<mail>s@h.c</mail>
    	</user>
    </users>
    j'ai écrit un script mais il donne rien
    script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $users =  simplexml_load_file($data);
    	foreach($users->xpath("//user[@id='".$_SESSION['identifiant']."']//cours") as $item) 
    		{ 
    			$row = simplexml_load_string($item->asXML());
    			$c = $row->xpath("//user[@id ='".$_SESSION['identifiant']."']//cours[@id ='".$_SESSION['cours']."']");
    			if($c[0]){
    				print "\n".$item->responsable_cours;
    				$item->addChild('titre', $_SESSION['titre']) ;  
    				$users->asXML('users.xml' ) ;
    					}
    		}
    quelqu'un a une solution??????

    merci d'avance.

  2. #2
    Membre chevronné
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Par défaut
    Un double slash indique la racine d'un document xml.

    J'ai rien contre simple_xml() mais pour faire ce genre de chose le dom est plus approprié je trouve.

  3. #3
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 376
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 376
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($users->xpath("//user[@id='".$_SESSION['identifiant']."']//cours") as $item)
    Pourquoi un foreach( ) ? N'es-tu pas censée avoir un seul membre répondant à un ID ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $row = simplexml_load_string($item->asXML());
    Ceci est inutile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $c = $row->xpath("//user[@id ='".$_SESSION['identifiant']."']//cours[@id ='".$_SESSION['cours']."']");
    Cela m'a l'air redondant.
    Plusieurs cours peuvent avoir le même id dans ton XML ? Si non tu peux faire un XPath directement sur <cours>.

    Bon a priori je ferais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $users =  simplexml_load_file('users.xml') ;
    $xpath = "//user[@id='{$_SESSION['identifiant']}']/cours[@id='{$_SESSION['cours']}']" ;
    $cours = $users->xpath($xpath) ;
    $cours[0]->addChild('titre', $_SESSION['titre']) ;
    $users->asXML('users.xml') ;

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 376
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 376
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Xunil Voir le message
    Un double slash indique la racine d'un document xml.
    Tu confonds avec /expression

  5. #5
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 38
    Par défaut
    Bonjour,

    merci pour vos réponses;
    est ce que quelqu'un peut me préciser la difference entre simplexml et domxml?

    merci d'avance

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 376
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 376
    Billets dans le blog
    17
    Par défaut
    Ce sont 2 interfaces de programmation qui traitent le XML chacune à leur manière.

  7. #7
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 38
    Par défaut
    donc ils offrent les mêmes fonctionnalités?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [LINQ to XML] Ajout d'une balise dans un xml existant
    Par Gregory.M dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 27/05/2008, 23h09
  2. Ajout d'une balise HTML dans un JTextPane
    Par adriien dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 04/03/2008, 10h56
  3. [JDOM] Ajout d'une balise d'inclusion d'un fichier XSL
    Par zako dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 31/07/2007, 09h14
  4. [JDOM] Ajout d'une balise avec un attribut différent.
    Par Nidel dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 27/04/2007, 19h36
  5. Ajout d'une balise XML
    Par spynux dans le forum Langage
    Réponses: 5
    Dernier message: 31/05/2006, 13h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo