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 :

[XML] Créer un fichier XML


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 97
    Points : 76
    Points
    76
    Par défaut [XML] Créer un fichier XML
    Bonjour , je débute avec l'exemple mis sur developpez pour creer un fichier XML a partir de php . (mais sans se connecter a une BD)
    je lance la page php dans le navigateur , mais il se passe rien , le fichier XML est toujours vide

    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
    <? php
          $xml = '<?xml version="1.0" encoding="iso-8859-1"?><rss version="2.0">';
          $xml .= '<channel>';
          $xml .= '<title>Titre du channel</title>';
          $xml .= '<link>http://www.monsite.com</link>';
          $xml .= '<description>Description du channel</description>';
          $titre = "Mateo21"
          $link = "www.monsite.com"
          $description = "Matederferfrfg"
          $xml .= '<item>';
          $xml .= '<title>'.$titre.'</title>';
          $xml .= '<link>'.$link.'</link>';
          $xml .= '<description>'.$description.'</description>';
          $xml .= '</item>';
          $xml .= '</channel>';
          $xml .= '</rss>';
          $fp = fopen("flux.xml", 'w+');
          fputs($fp, $xml);
          fclose($fp);
    ?>
    comment faire ?

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Il faut taper <?php, sans espace.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $titre = "Mateo21"
    $link = "www.monsite.com"
    $description = "Matederferfrfg"
    Manque des ; après chq instruction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fp = fopen("flux.xml", 'w+');
    Le + de w+ est inutile, se limiter à w, r ou a.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 97
    Points : 76
    Points
    76
    Par défaut
    merci Séb , je suis super debutante, ça marche mnt , voici mon code final

    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
    <?php
     
    // édition du début du fichier XML
    $xml = '<?xml version="1.0" encoding="iso-8859-1"?><rss version="2.0">';
    $xml .= '<channel>';
    $xml .= '<title>Titre du channel</title>';
    $xml .= '<link>http://www.monsite.com</link>';
    $xml .= '<description>Description du channel</description>';
     
    	$titre='a';
    	$description='b';
     
     
    	$xml .= '<item>';
    	$xml .= '<title>'.$titre.'</title>';
    	$xml .= '<description>'.$description.'</description>';
    	$xml .= '</item>';
    $xml .= '</channel>';
    $xml .= '</rss>';
     
    // écriture dans le fichier
    $fp = fopen("xml/test.xml", 'w+');
    fputs($fp, $xml);
    fclose($fp);
     
    ?>
    et le fichier XML resultant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      <?xml version="1.0" encoding="iso-8859-1" ?> 
    - <rss version="2.0">
    - <channel>
      <title>Titre du channel</title> 
      <link>http://www.monsite.com</link> 
      <description>Description du channel</description> 
    - <item>
      <title>a</title> 
      <description>b</description> 
      </item>
      </channel>
      </rss>
    mais j'ai comme meme une question , pour avoir le fichier xml resultat , j'ai crée un ficheir xml vide que j'ai remplie a travers le php , en donnant son chemin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // écriture dans le fichier
    $fp = fopen("xml/test.xml", 'w+');
    ma question : est-t-il possible que ce fichier soit créer automatiquement a travers le code php et remplie par la suite de balises comme l'on a fais ???

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Lorsque tu appelles fopen, dans le deuxième paramètre (r,w ou a) si tu ajoutes le + (dans ton exemple w+) celà créera le fichier s'il n'existe pas.

    Tu avais déjà codé ta réponse .

    Steve.

  5. #5
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    ma question : est-t-il possible que ce fichier soit créer automatiquement a travers le code php et remplie par la suite de balises comme l'on a fais ???
    Tu veux rajouter des éléments (par exemple <item>) à un fichier existant ?
    Si oui alors il faut :
    - Soit regénérer le fichier en partant de zéro
    - Soit le compléter à l'aide d'une API de manip XML telles SimpleXML http://fr.php.net/simplexml ou DOM http://fr.php.net/dom
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  6. #6
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 97
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par styvodiabolo Voir le message
    Bonjour,

    Lorsque tu appelles fopen, dans le deuxième paramètre (r,w ou a) si tu ajoutes le + (dans ton exemple w+) celà créera le fichier s'il n'existe pas.

    Tu avais déjà codé ta réponse .

    Steve.
    ow ouiii , c'etait aussi simple que ça merci Steve ... heu et pour les Dom j'ai d'autres questions , je vais créer un autre topic !
    @+

  7. #7
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 97
    Points : 76
    Points
    76
    Par défaut
    rebonjour
    bon puisque maintenant j'essaye de metriser SimpleXML , je veux créer un fichier xml avec cette fonctionnalité.
    voici le code que j'ai essayé !

    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
    <?php
     
    $xml = <<<XML
    <books>
        <book title="Fahrenheit 451" author="Ray Bradbury"/>
        <book title="Stranger in a Strange Land" author="Robert Heinlein"/>
    </books>
    XML;
     
    $sxe = new SimpleXMLElement($xml);
     
    $new_book = $sxe->addChild('book');
    $new_book->addAttribute('title', '1984');
    $new_book->addAttribute('author', 'George Orwell');
     
    echo $sxe->asXML();
     
     $fp = fopen("xml/flux.xml", 'w+');
          fputs($fp, $sxe);
          fclose($fp);
    ?>
    mais lorsque j'execute le code , je ne trouve aucun fichier xml (flux.xml) créer dans le repertoire

    comment le faire ?

  8. #8
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Il faut utiliser asXML( ) pour créer le fichier.
    Des exemples sont donnés dans la doc SimpleXML
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  9. #9
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 97
    Points : 76
    Points
    76
    Par défaut
    youpii ça marche

    aufait j'avais deja donné le chemin dans asXML; mais ça marché pas , y avait un probleme dans le serveur , lorsque je l'ai reinstallé , ça fonctionné a nouveau

    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
    <?php
     
    $xml = <<<XML
    <books>
        <book title="Fahrenheit 451" author="Ray Bradbury"/>
        <book title="Stranger in a Strange Land" author="Robert Heinlein"/>
    </books>
    XML;
     
    $sxe = new SimpleXMLElement($xml);
     
    $new_book = $sxe->addChild('book');
    $new_book->addAttribute('title', '1984');
    $new_book->addAttribute('author', 'George Orwell');
     
    echo $sxe->asXML("xml/flux.xml");
    ?>
    Merci beacoup Séb j'ai bcp appris cette semaine

  10. #10
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 97
    Points : 76
    Points
    76
    Par défaut
    heu , j'ai un autre probleme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $xmlbase = <<<XML
    <?xml version="1.0" encoding="UTF-8"
    <service>
    <axml:sc axml:id="mysc">
    ......<axml:ws-soap></axml:ws-soap>
    </axml:sc>
     </service>
    XML;
    ?>
    je veux ajouter un noeud <axml:ws-soap> qui soit dans la balise <axml:sc> comme montré en rouge.

    j'ai essayé avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $simpleXml = new SimpleXMLElement($xmlbase); 
    $axmlwssoap   = $simpleXml->addChild('axml:ws-soap'); 
    $axmlwssoap->addAttribute('endpoint',$link);
    $methode = $axmlwssoap->addChild($methode);
    $methode->addAttribute('xmlns',$link1);
    $parametre= $methode->addChild($param,$value);
    $simpleXml->asXML("xml/final.xml");
    hélas , mauvaise surprise le neoud que j'ai ajouté c'est placé ici (en rouge):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="UTF-8"
    <service>
    <axml:sc axml:id="mysc">
    ......
    </axml:sc>
    <axml:ws-soap></axml:ws-soap> 
     </service>
    je me dis que addChild , ajoute un noeud au neoud racine <service>, alors comment ajouter un neoud a un enfant de la racine ????

  11. #11
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Il faut appliquer addChild( ) à l'enfant en question.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  12. #12
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 97
    Points : 76
    Points
    76
    Par défaut
    merci !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $xml = new SimpleXMLElement($xmlstr); 
     
      $character = $xml->book[0]->characters->addChild('character');

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

Discussions similaires

  1. [DOM] Créer un fichier XML indenté
    Par phoebe dans le forum Format d'échange (XML, JSON...)
    Réponses: 19
    Dernier message: 06/10/2009, 23h31
  2. [DOM] Créer un fichier XML sous une forme bien précise
    Par LaseLiep dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 09/06/2005, 18h05
  3. [C#] [XML] Comment créer un fichier XML
    Par pc152 dans le forum Windows Forms
    Réponses: 12
    Dernier message: 28/09/2004, 13h41
  4. [C#] Créer un fichier Xml à partir d'un objet
    Par Troopers dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/09/2004, 13h23
  5. [DOM] est ce qu'on peut créer un fichier xml en java ?
    Par miloud dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 21/01/2004, 10h40

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