1. #1
    Membre régulier
    Inscrit en
    décembre 2006
    Messages
    339
    Détails du profil
    Informations forums :
    Inscription : décembre 2006
    Messages : 339
    Points : 71
    Points
    71

    Par défaut XML et PHP undefined method DOMNodeList::getAttribute()

    Voici un code XML que je tente de traiter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?xml version="1.0" encoding="UTF-8"?>
    <partner id='52421'>
    <program id='3079'>
    <name><![CDATA[Damart ]]></name>
    <action id="W003161870" SubID="test" ActionDate="2017-03-23 22:50:46" ValidationDate="" ActionStatus="1" ActionType="3" ProgramCommission="10.000%" ActionCommission="1.991" CartAmount="19.91" ProgramComID="856715" PartnerComID="315834" Title="Vente+Nouveau+Client" ProgramCurrency="EUR" Device="desktop" />
    </program>
    </partner>
    Mais php plante à la lecture...Fatal error: Call to undefined method DOMNodeList::getAttribute() in ventepi.php on line 12

    Voici le code PHP :
    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
     
    $document_xml = new DomDocument(); // Instanciation de la classe DomDocument : création d'un nouvel objet
    $document_xml->load('http://api.example.com/'); // Chargement du xml affiché ci-dessus
    $elements = $document_xml->getElementsByTagName('program');
    $nb=$elements->length;
    if ($nb>0) {
    foreach($elements as $program)
    {
    $idprog=$program->getAttribute('id');
    $achats=$program->getElementsByTagName('action');
    // la ligne 12 qui buggue est ci-dessous donc quand on appelle SubID
    $argsite=$achats->getAttribute('SubID');
    $id_achat=$achats->getAttribute('id');
    $idoffer=0;
    }
    }
    Est-ce que vous avez une idée ? Le XML me parait bizarre pour ma part, notamment la section "action" car elle n'est jamais fermé et n'a que des attributs sans contenu véritable et se termine par çà "/>"
    La ligne $idprog=$program->getAttribute('id'); qui récupère le paramètre id de program lui fonctionne il semble, tout çà me paraît assez étrange
    Merci par avance

  2. #2
    Membre expérimenté
    Inscrit en
    octobre 2011
    Messages
    970
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 970
    Points : 1 689
    Points
    1 689

    Par défaut

    undefined method DOMNodeList::getAttribute()
    Ça dit exactement ce qu'est dit. $achats comme $programs est un ...List.

    Si un parallelisme avec ce qu'est fait à $elements aide à faire comprendre, on peut faire comme ça.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $achats=$program->getElementsByTagName('action');
    foreach($achats as $achat) {
        $argsite=$achat->getAttribute('SubID');
        $id_achat=$achat->getAttribute('id');
        $idoffer=0;
        //faire des choses avec
    }
    Et puis si je dirais que <action id="..." ... /> est largement équivalent à <action id="..." ...></action>, ça vous assure?

Discussions similaires

  1. [1.x] Call to undefined method après modification Product.class.php
    Par kira-sama dans le forum Symfony
    Réponses: 1
    Dernier message: 13/08/2013, 16h59
  2. [XSLT] transformation XML->XML en php
    Par amellouki dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 03/03/2005, 12h32
  3. [XSLT] XML et PHP
    Par Dam'$ dans le forum XSL & XSLT
    Réponses: 10
    Dernier message: 05/08/2004, 15h14
  4. [XML et PHP]
    Par Mister Nono dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 22/03/2004, 13h57
  5. XML + XSL + PHP
    Par ZzZerf dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 21/03/2003, 15h54

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