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] création d'un XML


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 83
    Points
    83
    Par défaut [SimpleXML] création d'un XML
    Bonjour,

    Je doit réaliser un page me sortant a partir d'une BDD des résultats du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    <?xml version="1.0" encoding="UTF-8" ?>
    <a:feed xmlns:a="http://www.w3.org/2005/Atom" xmlns="http://www.w3.org/1999/xhtml">
      <a:title type="xhtml">
        <div>
          <span class="flux">FLUX XML</span>
        </div>
      </a:title>
      <a:id>http://LIENVERS LE XML</a:id>
      <a:updated>2012-09-13T12:01:51Z</a:updated>
      <a:author>
        <a:name>RESULTAT XML</a:name>
      </a:author>
      <a:entry>
        <a:title type="xhtml">
        	<div class="enveloppe">
        	    ....      	
        	</div> 
        </a:title>
      </a:entry>
    </a:feed>
    ....
    Pour tester, j'ai fait cela en utisant Zend :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    		$this->getResponse()->clearHeaders();
    		$this->getResponse()->setHeader('Content-Type', 'text/xml');
     
    		// Instance de la class DomDocument
    		$doc = new DOMDocument();
     
    		// Definition de la version et l'encodage
    		$doc->version = '1.0';
    		$doc->encoding = 'utf-8';
     
    		// Ajout d'un commentaire a la racine
    		$comment_elt = $doc->createComment('Créé par Prénom NOM (email)');
    		$doc->appendChild($comment_elt);
     
    		// Ajout la balise 'note' a la racine
    		$note_elt = $doc->createElement('note');
    		$doc->appendChild($note_elt);
     
    		// Creation des elements 'to' 'from' 'heading' 'body'
    		$to_elt      = $doc->createElement('to', 'Nicolas');
    		$from_elt    = $doc->createElement('from', 'Carla');
    		$heading_elt = $doc->createElement('heading', 'Rappel');
     
    		// Pas de contenu pour l'instant pour cet element car on desir y mettre une balise CDATA
    		$body_elt = $doc->createElement('body');
     
    		// Specifier que les elements to/from/heading/body sont dans 'note'
    		$note_elt->appendChild($to_elt);
    		$note_elt->appendChild($from_elt);
    		$note_elt->appendChild($heading_elt);
    		$note_elt->appendChild($body_elt);
     
    		// Creation d'une section CDATA
    		$body_cdata_elt = $doc->createCDATASection("N'oublie pas tes talonnettes");
     
    		// Placement de cette section entre les balises <body> et </body>
    		$body_elt->appendChild($body_cdata_elt);
     
    		// Rendre Joli ;)
    		$doc->formatOutput = true;
     
    		// Afficher le document XML
    		$this->view->xml = $doc->saveXML();
    J'obtient dans le navigateur, c'est qu'un exemple pour voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    This XML file does not appear to have any style information associated with it. The document tree is shown below.
    <!-- Créé par Prénom NOM (email) -->
    <note>
    <to>Nicolas</to>
    <from>Carla</from>
    <heading>Rappel</heading>
    <body>
    <![CDATA[ N'oublie pas tes talonnettes ]]>
    </body>
    </note>
    Es-ce normal que j'obtienne : This XML file does not appear to have any style information associated with it. The document tree is shown below.

    au dessus ?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonsoir,

    Quel navigateur a été utilisé pour le test ?

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Bonsoir,

    Quel navigateur a été utilisé pour le test ?
    Bonjour,

    J'utilise Chrome. Mais testé aussi sur Firefox.

    Merci

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    J'ai eu ce problème lorsque j'ai cherché à injecter du CSS et Javascript via Ajax et je l'ai résolu tout bêtement en encadrant les balises CDATA. Je pense que c'est l'apostrophe qui pose problème.
    Est ce que tu as essayé avec du texte simple sans apostrophe dans le CDATA ?

    Sinon à tout hasard, voici comment j'ai fait (les retours à la ligne sont nécessaires CDATA doit être isolé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // pour le CSS
    /*<![CDATA[*/
    {$data}
    /*]]>*/
     
     
    // pour le JS
    //<![CDATA[
    {$data}
    //]]>
    Et tu peux aussi essayer en codant à la mano ton CDATA de manière à l'isoler sur sa ligne

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    J'ai eu ce problème lorsque j'ai cherché à injecter du CSS et Javascript via Ajax et je l'ai résolu tout bêtement en encadrant les balises CDATA. Je pense que c'est l'apostrophe qui pose problème.
    Est ce que tu as essayé avec du texte simple sans apostrophe dans le CDATA ?

    Sinon à tout hasard, voici comment j'ai fait (les retours à la ligne sont nécessaires CDATA doit être isolé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // pour le CSS
    *<![CDATA[*/
    {$data}
    /*]]>*/
     
     
    // pour le JS
    //<![CDATA[
    {$data}
    //]]>
    Et tu peux aussi essayer en codant à la mano ton CDATA de manière à l'isoler sur sa ligne
    re, merci mais même si j'enleve le CDATA c'est le même résultats....

    Bizarre....

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Et en remontant tes paramètres dans le constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $doc = new DOMDocument('1.0', 'utf-8');
    Toujours le même souci ?
    Dans tous les cas il me semble que ton document est bien construit.

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Et en remontant tes paramètres dans le constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $doc = new DOMDocument('1.0', 'utf-8');
    Toujours le même souci ?
    Dans tous les cas il me semble que ton document est bien construit.
    Même problèmes....

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Tu as bien supprimé ces 2 lignes avec le passage des paramètres dans le constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // Definition de la version et l'encodage
    $doc->version = '1.0';
    $doc->encoding = 'utf-8';

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Tu as bien supprimé ces 2 lignes avec le passage des paramètres dans le constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // Definition de la version et l'encodage
    $doc->version = '1.0';
    $doc->encoding = 'utf-8';
    Oui bien sûr.

    Par contre quand je regarde le source du code, j'ai bien le XML bien formé sans le texte rajouté...

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 83
    Points
    83
    Par défaut
    re,

    Un petit conseil : vaut mieux utiliser DOMDocument ou bien SimpleXMLElement ?

    Autre chose je doit faire du <a:node> : mais quand je fais avec le $xml = new SimpleXMLElement($string); et dans $string directement :
    $string = "<a:feed> ... </a:feed>";

    cela fonctionne....

    Quel methode prendre ? Le plus simple à créer ?

    Merci

  11. #11
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bah écoute j'ai fait un essai avec simple_xml et voici le résultat qui fonctionne chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
     
    $nom    = 'toto';
    $prenom = 'titi';
    $email  = 'email';
     
    $xml =
    <<<XML
    <?xml version="1.0" encoding="utf-8"?>
    <!-- Créé par {$prenom} {$nom} ({$email}) -->
    <note>
        <to></to>
        <from></from>
        <heading></heading>
        <body></body>
    </note>
    XML;
     
    $dom = simplexml_load_string($xml);
     
    $dom->to = 'Nicolas';
    $dom->from = 'Carla';
    $dom->heading = 'Rappel';
    $dom->body =
    <<<'STR'
    <![CDATA[
    N'oublie pas tes talonnettes
    ]]>
    STR;
     
    header('Content-Type="text/xml"');
    echo $dom->asXML();
     
    ?>

  12. #12
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Bah écoute j'ai fait un essai avec simple_xml et voici le résultat qui fonctionne chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
     
    $nom    = 'toto';
    $prenom = 'titi';
    $email  = 'email';
     
    $xml =
    <<<XML
    <?xml version="1.0" encoding="utf-8"?>
    <!-- Créé par {$prenom} {$nom} ({$email}) -->
    <note>
        <to></to>
        <from></from>
        <heading></heading>
        <body></body>
    </note>
    XML;
     
    $dom = simplexml_load_string($xml);
     
    $dom->to = 'Nicolas';
    $dom->from = 'Carla';
    $dom->heading = 'Rappel';
    $dom->body =
    <<<'STR'
    <![CDATA[
    N'oublie pas tes talonnettes
    ]]>
    STR;
     
    header('Content-Type="text/xml"');
    echo $dom->asXML();
     
    ?>
    bon merci de ton aide... c'est gentil...

Discussions similaires

  1. [SimpleXML] Création de fichiers XML
    Par Mourou_a dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 25/02/2008, 19h04
  2. [SimpleXML] Lecteur de flux XML léger
    Par killprog dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 15/03/2006, 11h27
  3. [XSLT] Création de fichier XML dynamique avec PHP
    Par daninho dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 02/02/2006, 11h18
  4. [SimpleXML] Comment passer de XML à MySQL et vice-versa avec PHP ?
    Par Ben42 dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 05/12/2005, 21h42

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