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] récupération d'une valeur décimale dans un flux XML


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Par défaut [DOM] récupération d'une valeur décimale dans un flux XML
    Hello,

    je cherche à récupérer une valeur dans un flux xml, j'utilise comme indiqué dans les tutoriels:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $dom = new DOMDocument();
    $dom->loadXml($xmlupstream);
    $dom->save('nouveauFichier.xml');  
    $charge = $dom->getElementsByTagName('TotalCharges')->item(1);    
    echo $charge->firstChild->nodeValue;

    le flux xml dont je cherche à récupérer une valeur précise est le suivant:
    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
    27
    28
    29
    30
    31
    32
    33
    <ratingserviceselectionresponse>
    	<response>
    		<transactionreference>
    			<customercontext>Rating and Service</customercontext>
    			<xpciversion>1.0001</xpciversion>
    		</transactionreference>
    		<responsestatuscode>1</responsestatuscode>		<responsestatusdescription>Success</responsestatusdescription>
    	</response>
    	<ratedshipment>
    		<service>
    			<code>11</code>
    		</service>
    		<ratedshipmentwarning>Your invoice may vary from the displayed reference rates</ratedshipmentwarning>
    		<billingweight>
    			<unitofmeasurement>
    				<code>KGS</code>
    			</unitofmeasurement>
    			<weight>1.0</weight>
    		</billingweight>
    		<transportationcharges>
    			<currencycode>EUR</currencycode>
    			<monetaryvalue>11.44</monetaryvalue>
    		</transportationcharges>
    		<serviceoptionscharges>
    			<currencycode>EUR</currencycode>
    			<monetaryvalue>0.00</monetaryvalue>
    		</serviceoptionscharges>
    		<totalcharges>
    			<currencycode>EUR</currencycode>
    			<monetaryvalue>11.44</monetaryvalue>
    		</totalcharges>
    	</ratedshipment>
    </ratingserviceselectionresponse>
    La valeur que je cherche à récupérer est 11.44 dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <totalcharges>	<currencycode>EUR</currencycode><monetaryvalue>11.44</monetaryvalue></totalcharges>
    Lorsque j'écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $charge = $dom->getElementsByTagName('TotalCharges')->item(1);    
    echo $charge->firstChild->nodeValue;
    firefox n'affiche rien.

    Pourtant lorsque j'écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $charge = $dom->getElementsByTagName('TotalCharges')->item(0);    
    echo $charge->firstChild->nodeValue;
    il m'indique bien la valeur du node précédent, c-à-d EUR...

    Je ne vois pas où est l'erreur...

  2. #2
    Membre expérimenté

    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
    Par défaut
    D'après ce qui nous est ici donné, n'ayant qu'un seul élément totalcharges pour tout le document, il semble en effet normal que l'expression correcte soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $charge = $dom->getElementsByTagName('TotalCharges')->item(0);
    Le premier (et seul) élément correspondant étant à l'indice 0.

    Enfin, je ne vois pas non plus ce qu'il y a d'anormal à récupérer EUR avec cette expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $charge->firstChild->nodeValue;
    Puisque le premier enfant de l'élément TotalCharges est currencycode (voir éventuellement un élément text résultant de l'indentation du document).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $dom = new DOMDocument();
    $dom->loadXml($xmlupstream);
    $dom->save('nouveauFichier.xml');  
    $charge = $dom->getElementsByTagName('TotalCharges')->item(0);    
    echo $charge->getElementsByTagName('monetaryvalue')->item(0)->nodeValue;

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Par défaut
    évidement, c'est à mesure d'erreurs que l'on apprend...

    J'avais mal compris la notion ->item[0];

    J'ai testé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $dom = new DOMDocument();
    $dom->loadXml($xmlupstream);
    $dom->save('nouveauFichier.xml');  
    $charge = $dom->getElementsByTagName('TotalCharges')->item(0);    
    echo $charge->getElementsByTagName('MonetaryValue')->item(0)->nodeValue;
    Cela fonctionne!

    Un tout tout grand MERCI!

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

Discussions similaires

  1. [Débutant] SP 2013 : Récupération d'une valeur présente dans l'url
    Par xangdar dans le forum SharePoint
    Réponses: 2
    Dernier message: 18/07/2014, 09h00
  2. Réponses: 11
    Dernier message: 29/11/2010, 16h44
  3. récupération d'une valeur stockée dans un bean
    Par mehoodm dans le forum Struts 1
    Réponses: 0
    Dernier message: 09/09/2008, 05h34
  4. Réponses: 1
    Dernier message: 25/04/2006, 21h29
  5. saisie d'une valeur décimale dans un CSpinEdit
    Par Milowen dans le forum C++Builder
    Réponses: 3
    Dernier message: 12/10/2005, 09h57

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