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] Ajout d'élément à un fichier XML


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre habitué Avatar de pierre24
    Profil pro
    Inscrit en
    Février 2008
    Messages
    391
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 391
    Points : 160
    Points
    160
    Par défaut [DOM] Ajout d'élément à un fichier XML
    Salut a tous ! voila c la première fois que j'utilise PHP pour écrire dans un fichier XML et je rencontre quelques erreurs !

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    $filename = '../Clips.xml';
    $dom = new DomDocument();
    $dom->formatOutput = TRUE;
    $dom->preserveWhiteSpace = FALSE;
    $dom->load($filename);				 
    $news = $dom->createElement('Clip');
    $news->setAttribute('Chemin', $chemin);
    $news->setAttribute('Titre',$_POST['titre_video']);
    $dom->documentElement->appendChild($news);
    $dom->save($filename);
    et les erreus


    video uploadée avec succès !
    Warning: DOMDocument::load() [function.DOMDocument-load]: Unsupported encoding UFT-8 in file:///D%3A/%23%23%23PERSO%23%23%23/site%20perso/www/Clips.xml, line: 1 in D:\###PERSO###\site perso\www\administration\inc\ajout_video.inc.php on line 55

    Fatal error: Call to a member function appendChild() on a non-object in D:\###PERSO###\site perso\www\administration\inc\ajout_video.inc.php on line 59
    Merci d'avance pour votre aide !!!

  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
    La deuxième erreur est, a priori et simplement, la conséquence de la première.

    En ce qui concerne la première, il y a, semble-t-il, un problème au niveau de l'encodage qui est erroné ou n'est pas respecté. Par ailleurs, et à moins que vous n'utilisiez de l'UTF-8 pour vos pages/scripts, vos données doivent être encodées lors de vos différentes insertions/modifications :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $news->setAttribute('Chemin', utf8_encode($chemin));
    $news->setAttribute('Titre', utf8_encode($_POST['titre_video']));
    (ce ne doit pas être la seule possibilité ; on doit pouvoir sinon définir l'encodage par l'une des propriétés encoding de l'objet DomDocument)

  3. #3
    Membre habitué Avatar de pierre24
    Profil pro
    Inscrit en
    Février 2008
    Messages
    391
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 391
    Points : 160
    Points
    160
    Par défaut
    Je viens de rajouter cela mais j'ai la meme erreur !
    Sinon dans la propriété du domdocument ca se passe comment ?

  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
    Faute de frappe UFT-8 (pour UTF-8) ? En tout cas l'encodage indiqué ne correspond pas à celui qui est réellement utilisé au niveau du fichier.

    Pour la propriété encoding, je pensais à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dom->encoding = 'iso-8859-1'; // ou autre
    Qui semblait modifier l'encodage utilisé de manière interne (qui est, par défaut du moins, de l'UTF-8).

  5. #5
    Membre habitué Avatar de pierre24
    Profil pro
    Inscrit en
    Février 2008
    Messages
    391
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 391
    Points : 160
    Points
    160
    Par défaut
    Faute de frappe UFT-8 (pour UTF-8) ?
    ???
    De votre part ???

    sinon j'ai toujours cette meme erreur !

  6. #6
    Membre habitué Avatar de pierre24
    Profil pro
    Inscrit en
    Février 2008
    Messages
    391
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 391
    Points : 160
    Points
    160
    Par défaut
    voici mon doc xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="UFT-8"?>
    <Play_list>
    	<Clip>
    		<Chemin value="kamnouze.flv"/>
    		<Titre value="j'accuse ces mots"/>
    	</Clip>
     
    </Play_list>
    si il est en UFT-8 je dois alors l'encoder de cette maniere :

    $dom->encoding = 'UFT-8';

    mais la toujours :

    Warning: DOMDocument::load() [function.DOMDocument-load]: Unsupported encoding UFT-8 in file:///D%3A/%23%23%23PERSO%23%23%23/site%20perso/www/Clips.xml, line: 1 in D:\###PERSO###\site perso\www\administration\inc\ajout_video.inc.php on line 56

    Fatal error: Call to a member function appendChild() on a non-object in D:\###PERSO###\site perso\www\administration\inc\ajout_video.inc.php on line 60

  7. #7
    Membre habitué Avatar de pierre24
    Profil pro
    Inscrit en
    Février 2008
    Messages
    391
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 391
    Points : 160
    Points
    160
    Par défaut
    C bon probleme résolu !!

    voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="UTF-8"?>
    <Play_list>
      
      <Clip>
        <Chemin value="kamnouze.flv"/>
        <Titre value="j'accuse ces mots"/>
      </Clip>
      
    </Play_list>
    ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $filename = '../Clips.xml';
    $dom = new DomDocument();
    $dom->encoding = 'utf-8'; // ou autre		
    $dom->formatOutput = TRUE;
    $dom->preserveWhiteSpace = FALSE;
    $dom->load($filename);
    $news = $dom->createElement('Clip');
    $news->setAttribute('Chemin',utf8_encode($chemin));
    $news->setAttribute('Titre',utf8_encode($_POST['titre_video']))	;		$dom->documentElement->appendChild($news);
    $dom->save($filename);
    mais par contre il faut que je vois pour qu'il mette chemin et titre en child et non pas en attribut de CLIP

  8. #8
    Membre habitué Avatar de pierre24
    Profil pro
    Inscrit en
    Février 2008
    Messages
    391
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 391
    Points : 160
    Points
    160
    Par défaut
    Alors mon ajout dans le fichier xml marche mais il ne prend pas la structure que je veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="UTF-8"?>
    <Play_list>
      <Clip>
        <Chemin value="kamnouze.flv"/>
        <Titre value="j'accuse ces mots"/>
      </Clip>
    </Play_list>
    quel sont les fonctions a utiliser pour creer un clip puis ensuite ajouter le chemin et le titre ???

    merci d'avance !

  9. #9
    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
    A en juger par votre code, ce n'est pas ce que vous demandez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $news = $dom->createElement('Clip');
    $news->setAttribute('Chemin', $chemin);
    $news->setAttribute('Titre',$_POST['titre_video']);
    Vous créez ici un élément Clip auquel vous adjoignez deux attributs (Titre et Chemin). Alors que vous voudriez deux fils de même nom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $filename = '../Clips.xml';
    $dom = new DomDocument();
    $dom->formatOutput = TRUE;
    $dom->preserveWhiteSpace = FALSE;
    $dom->load($filename);
    $nClip = $dom->createElement('Clip');
    $nChemin = $dom->createElement('Chemin');
    $nTitre = $dom->createElement('Titre');
    $nChemin->setAttribute('value', utf8_encode($chemin));
    $nTitre->setAttribute('value', utf8_encode($_POST['titre_video']));
    $nClip->appendChild($nChemin);
    $nClip->appendChild($nTitre);
    $dom->documentElement->appendChild($nClip);
    $dom->save($filename);
    (non testé)

  10. #10
    Membre habitué Avatar de pierre24
    Profil pro
    Inscrit en
    Février 2008
    Messages
    391
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 391
    Points : 160
    Points
    160
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $nClip->appendChild($nChemin);
    $nClip->appendChild($nTitre);
    $dom->documentElement->appendChild($nClip);
    $dom->save($filename);
    A quoi correspond ce n devant le nom des variables ???

  11. #11
    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
    Pourquoi cette question ? Ce ne sont que des variables : libre à vous de les nommer comme bon vous semble. Cependant, j'ai choisi ce préfixe pour la simple et bonne raison que certaines variables semblaient déjà définies dans un autre but ($chemin).

  12. #12
    Membre habitué Avatar de pierre24
    Profil pro
    Inscrit en
    Février 2008
    Messages
    391
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 391
    Points : 160
    Points
    160
    Par défaut
    oui pardon j'ai survolé vite fait et je n'ai pas fait attention !

    Merci !

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

Discussions similaires

  1. [XML] Problème ajout éléments dans fichier XML
    Par QAYS dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 08/09/2011, 23h36
  2. [JDOM] Ajout d'élément à un fichier xml
    Par delphine7983 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 14/07/2008, 17h31
  3. [DOM] php4 : validation d'un fichier XML par rapport à un XSD
    Par nannous dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 25/02/2008, 09h43
  4. [JDOM] Ajout élément dans fichier XML
    Par delinot dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 18/07/2005, 11h10
  5. [xsl] Ajouter 1 élément à la page xml
    Par ametisse dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 10/03/2003, 12h15

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