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 :

[DOM XML] Ecrire dans un fichier XML comme dans un TXT


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Invité
    Invité(e)
    Par défaut [DOM XML] Ecrire dans un fichier XML comme dans un TXT
    Bonjour j'utilise actuellement un TOUT PETIT script qui me permet d'ajouter dans un fichier txt une nouvelle ligne a chaque validation du formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $mail = $_POST['_Mail'];
    $fp=fopen("fichier.txt","a+");
    fputs($fp,"$mail");
    fputs($fp,"\n");
    fclose($fp);
    je voudrais faire exactement la même chose mais en générant un xml de ce format :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0"?>
    <Wanliste>
    <email>address1@example.tld</email>
    <email>address2@example.tld</email>
    <email>.</email>
    </Wanliste>
    Pouvez vous me venir en aide je n'ai aucune connaissance pour faire du XML et je n'ais rien compris a DOM et a simplxml
    Dernière modification par Invité ; 23/09/2007 à 16h14.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Par rapport à votre cas c'est simple puisque cela consiste à créer puis ajouter un nouvel élément email à l'élément racine :
    Version DOM :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    define('FICHIER_XML', 'mon_fichier.xml');
     
    if (is_file(FICHIER_XML)) {
        $dom = DomDocument::load(FICHIER_XML);
    } else {
        $dom = new DomDocument;
        $racine = $dom->createElement('Wanliste');
        $dom->appendChild($racine);
    }
    $email = $dom->createElement('email', utf8_encode($_POST['_Mail']));
    $dom->documentElement->appendChild($email);
    $dom->save(FICHIER_XML);
    Version SimpleXML :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    define('FICHIER_XML', 'mon_fichier.xml');
     
    if (is_file(FICHIER_XML)) {
        $sxml = simplexml_load_file(FICHIER_XML);
    } else {
        $sxml = new SimpleXMLElement('<Wanliste/>');
    }
    $sxml->addChild('email', utf8_encode($_POST['_Mail']));
    $sxml->asXML(FICHIER_XML);
    (non testé)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci beaucoups pour votre réponse aussi rapide.
    j'ais testé les deux solutions, mais le fichier xml ne ce génere pas.

    comment corriger ce pb

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Vous n'avez rien de plus précis quant au dysfonctionnement ? Avez-vous bien le droit d'écrire sur le fichier et/ou dans le répertoire parent ? Avez-vous des messages d'erreurs ? Autres ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Dsl, je fais les choses à moitié.

    pour la source avec simplexml, j'ai cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Call to undefined function: simplexml_load_file() in /xxxxx/yyyyy/www/zzzzz/post_result.php on line 3
    la ligne 3 correspond a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sxml = simplexml_load_file(FICHIER_XML);

    pour la source avec DOMxml, j'ai 2 erreurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: domdocument() expects at least 1 parameter, 0 given in /xxxxx/yyyyy/www/zzzzz/post_result.php on line 7
    qui correspond a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dom = new DomDocument;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Call to undefined method: domdocument->createelement() in /xxxxx/yyyyy/www/zzzzz/post_result.php on line 8
    qui correspond a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $racine = $dom->createElement('Wanliste');
    Je n'ai auccun pb d'écriture sur mes dossiers car comme je le disais dans mon premier post j'écrit déja dans des fichiers TXT

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Vous n'auriez pas une version 4 et non 5 [de PHP] par hasard ? Si tel est le cas vous ne disposez ni de l'extension DOM ni de l'extension SimpleXML

    Sachant que certains hébergeurs, comme Free, proposent les deux. La différence se faisant au niveau de l'extension du fichier (.php => PHP 4, .php5 => PHP 5) sauf cas particulier.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Géniale les deux méthodes marche. Pour ça j'ais changé l'extention php en php5.
    Par contre ce qui m'etonne c'est que DOMXML existe depuis la version 4.3 de php. Donc pourquoi cela ne marchait pas avant que je change l'extention ?
    surtout que mon hebergeur est en version 4.4

    une derniere chose ou rajouter des sauts de lignes pour formater visuellement le fichier correctement. Acctuelement tout est a la suite.

    Un grand merci pour votre aide

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par christobale
    Par contre ce qui m'etonne c'est que DOMXML existe depuis la version 4.3 de php. Donc pourquoi cela ne marchait pas avant que je change l'extention ?
    surtout que mon hebergeur est en version 4.4
    Les extensions DOM (PHP 5) et DOMXML (PHP 4) sont totalement différentes et n'ont rien à voir, surtout que la première permet de tirer parti de toutes les fonctionnalités objets qui ont été introduites à la version 5.

    Citation Envoyé par christobale
    une derniere chose ou rajouter des sauts de lignes pour formater visuellement le fichier correctement. Acctuelement tout est a la suite.
    Pour PHP 5, seule l'extension DOM le permet (pas SimpleXML) il faut pour cela :
    • Mettre la propriété preserveWhiteSpace de l'objet DomDocument avant le chargement de votre fichier à FALSE (valeur par défaut TRUE)
    • Mettre la propriété formatOutput du même objet à TRUE pour qu'au moment de sa sauvegarde (méthode save*), il soit formaté.

    Ce qui nous donne :
    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
    <?php
    define('FICHIER_XML', 'mon_fichier.xml');
     
    $dom = new DomDocument;
    if (is_file(FICHIER_XML)) {
        $dom->preserveWhiteSpace = FALSE;
        $dom->load(FICHIER_XML);
    } else {
        $racine = $dom->createElement('Wanliste');
        $dom->appendChild($racine);
    }
    $email = $dom->createElement('email', utf8_encode($_POST['_Mail']));
    $dom->documentElement->appendChild($email);
    $dom->formatOutput = TRUE;
    $dom->save(FICHIER_XML);

Discussions similaires

  1. [XML/Glib/GTK+] Comment lire et écrire dans un fichier XML
    Par Skarsnick dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 19/08/2009, 09h20
  2. Réponses: 1
    Dernier message: 22/04/2008, 11h24
  3. Réponses: 3
    Dernier message: 06/08/2007, 03h44
  4. [C#] ecrire le contenu d'une TextBox dans un fichier XML
    Par LaseLiep dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/09/2006, 12h51
  5. Réponses: 2
    Dernier message: 16/05/2006, 09h06

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