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] Erreur avec la méthode setAttribute


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 89
    Points : 51
    Points
    51
    Par défaut [DOM] Erreur avec la méthode setAttribute
    Je suis débutant total en XML.
    J'ai une erreur lorsque j'essaie de modifier une valeur dans mon fichier .xml :
    Fatal error: Call to undefined function setAttribute() in D:\Program Files\EasyPHP 2.0b1\www\Test\XML\index.php on line 13

    Voici mon code xml, ultra simple (fichier : base.xml) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <norme>
    	2,8
    </norme>
    Et mon code php, pas plus compliqué (fichier : index.php):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    	$dom = new DomDocument;
    	$dom->load("base.xml");
    	$LaNorme = $dom->getElementsByTagName('norme');
     
    	$nouvelleNorme = $dom->createElement("norme");
    	$nouvelleNorme = setAttribute("norme", "3");
     
    	foreach($LaNorme  as $norme)
    		echo 'Norme : ' .$norme->nodeValue . "<br />";
    ?>
    si j'enlève les deux lignes suivantes :
    $nouvelleNorme = $dom->createElement("norme");
    $nouvelleNorme = setAttribute("norme", "3");
    L'affichage fonctionne.

    Merci pour votre aide.

  2. #2
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    tu utilise la bibliothèque DOM. tu dois avoir conscience que toute les fonctions que tu exploitera seront des méthodes publiques d'objet DOM___ . donc tout ce que tu apellera se fera via l'opérateur directionnel ->

    je te conseille de regarder par ici et tu comprendra mieux

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 89
    Points : 51
    Points
    51
    Par défaut
    Merci de m'avoir répondu aussi rapidement mais le problème c'est que je suis justement allé sur le lien que tu m'a passé pour faire mon code.
    Quelqu'un pourrai le faire pour moi svp ??

  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
    Ce n'est pas une fonction mais une méthode (donc lié à un objet) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nouvelleNorme = setAttribute("norme", "3");
    Est donc incorrect.

    La correction est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nouvelleNorme->setAttribute("norme", "3");
    Mais il manque une partie à votre code (n'est-il pas montré ?) : l'élément créé n'est pas rattaché au document (enfin à l'arbre).

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 89
    Points : 51
    Points
    51
    Par défaut
    Ok merci beaucoup je n'est plus l'erreur mais maintenant le résultat affiché est 2,8 !!
    Sa devrai être 3 non ??

  6. #6
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    as-tu sauvegardé ton fichier xml?

    ce que julp t'a expliqué, c'est justement "l'opérateur directionnel ->"

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 89
    Points : 51
    Points
    51
    Par défaut
    Oui j'ai bien sauvegardé le xml.
    Oui excuse moi tu m'avais donné la bonne réponse mais je ne t'avais pas compris

  8. #8
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    as tu associé l'ajout de cette donné à ton schéma xml? (tout ce qui est appendchild... )


    est-il possible de voir le fichier xml une fois enregistré?

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 89
    Points : 51
    Points
    51
    Par défaut
    Je crois pas que j'ai fait de appenchild sinon le code sa donne sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <norme>
    	2,8
    </norme>
    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
    <html>
    <head><title>XML</title>
    <link href="./base.xml" rel="stylesheet" type="xml" />
    </head>
    <body>
     
     
    <?php
    	$dom = new DomDocument;
    	$dom->load("base.xml");
    	$LaNorme = $dom->getElementsByTagName('norme');
     
    	$nouvelleNorme = $dom->createElement("norme");
    	$nouvelleNorme->setAttribute("norme", "3");
     
    	foreach($LaNorme  as $norme)
    		echo 'Norme : ' .$norme->nodeValue . "<br />";
    ?>
     
    </body>
    </html>

  10. #10
    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
    Il faut apporter une correction : soit vous créez un nouvel élément, auquel cas il faut introduire un élément racine ; soit vous modifiez la racine existante (mais n'en créez pas une nouvelle). Mais quoiqu'il en soit tout document XML ne peut avoir qu'une seule et unique racine !

  11. #11
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 89
    Points : 51
    Points
    51
    Par défaut
    Ce que je recherche a faire c'est modifier la racine existante, modifier la valeur entre les deux balises norme.
    Mais comment faut-il fait ??

  12. #12
    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
    Pfiou, vous êtes loin du compte alors et c'est beaucoup plus simple que vous ne le pensez :
    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
    $xml = <<< EOX
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <norme>
    	2,8
    </norme>
    EOX;
     
    $dom = new DomDocument;
    #$dom->load("base.xml");
    $dom->loadXML($xml);
    $dom->documentElement->nodeValue = "3";
     
    header('Content-type: text/plain');
    echo $dom->saveXML();

  13. #13
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 89
    Points : 51
    Points
    51
    Par défaut
    Ok merci pour ta solution cela fonctionne à présent.
    C'est vrai que c'était simple mais quand on connait rien au XML...
    En fait je ne voyait pas trop comment faire et puis comme c'était juste pour une toute petite tâche je n'est pas prit le temps de faire de longues recherches.

    Merci encore.

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

Discussions similaires

  1. Erreur avec la méthode Sort
    Par phal2ip dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 20/10/2008, 10h21
  2. Message d'erreur avec la méthode UpdateBatch (ADO)
    Par GnarlyYoyo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/11/2007, 22h12
  3. [DOM] erreur avec DOM PHP5
    Par opeo dans le forum Bibliothèques et frameworks
    Réponses: 13
    Dernier message: 20/07/2007, 17h59
  4. [Zip] Erreur avec la méthode add() de PclZip
    Par Anduriel dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 20/01/2007, 17h42
  5. Erreur avec la méthode OpenRecordset
    Par NPortmann dans le forum VBA Access
    Réponses: 4
    Dernier message: 05/05/2006, 18h13

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