[Résolu][PHP] lecture d'objet XML en php

lecture d'objet XML en php [Résolu][PHP] - PHP - Programmation

Marsh Posté le 19-11-2009 à 17:45:28    

J'ai besoin de récupérer des infos dans un fichier xml  
 
fichier 2.xml : c'est une liste de produits avec si existant la/les valeurs "M_Prod_ID" et "EAN_UPC" associées, le fichier est très volumineux.

......
</file>
<file Product_ID="367665" Supplier_id="40" Catid="89" Product_View="3358" >
  <M_Prod_ID>X645</M_Prod_ID>
  <M_Prod_ID>X645-A</M_Prod_ID>
  <EAN_UPCS>
    <EAN_UPC Value="4025518836049"/>
    <EAN_UPC Value="4025518836156"/>
  </EAN_UPCS>
</file>
<file .....


script PHP pour le traitement xml :

Code :
  1. $xml = simplexml_load_file('2.xml');
  2. $xpath = "/interface/index/file";
  3. $temp=$xml->xpath($xpath);
  4. foreach( $temp as $val ) {
  5.   $prod[id] = utf8_decode($val[Product_ID]);
  6.   $prod[cat] = utf8_decode($val[Catid]);
  7.   $prod[view] = utf8_decode($val[Product_View]);
  8. }


J'arrive à récupérer toutes les valeurs de "file" mais je n'arrive pas à accéder à "M_Prod_ID" et "EAN_UPC"
la variable $temp ligne 3 les retourne sous la forme :  

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [Product_ID] => 367665
            [Supplier_id] => 40
            [Catid] => 89
            [Product_View] => 3358
        )
    [M_Prod_ID] => X645
    [M_Prod_ID] => X645-A
    [EAN_UPCS] => SimpleXMLElement Object
        (
            [EAN_UPC] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [Value] => 4025518836049
                            [Value] => 4025518836156
                        )
                )
        )
)


J'ai essayer plusieurs choses pour les récupérer mais sans grand succès.
Si quelqu'un peut me donner un coup de main...


Message édité par hutarios le 26-11-2009 à 14:36:11
Reply

Marsh Posté le 19-11-2009 à 17:45:28   

Reply

Marsh Posté le 20-11-2009 à 14:16:39    

Pourrais-tu dire ce que tu as essayé ?


Message édité par Fred999 le 20-11-2009 à 14:16:49
Reply

Marsh Posté le 20-11-2009 à 15:39:35    

Il faudrait parcourir l'objet SimpleXMLElement de manière récursive en récupérant tous ses fils (avec la méthode children()), ensuite suivant le nom de l'élément ("M_Prod_ID" ou "EAN_UPCS" ) récupérer sa valeur (dans le cas de "M_Prod_ID" ) ou refaire un parcours (dans le cas de "EAN_UPCS" ).


---------------
www.blurk.fr
Reply

Marsh Posté le 25-11-2009 à 14:59:36    

En gros :

Code :
  1. $mProdIDNodes = $val->M_Prod_ID;
  2. foreach ($mProdIDNodes as $mProdIDNode) {
  3.    $myVar = $mProdIDNode;
  4. }
  5. $EANUPCNodes = $val->$val->EAN_UPCS->EAN_UPC;
  6. foreach ($EANUPCNodes as $EANUPCNode) {
  7.    $myVar = $EANUPCNode['Value'];
  8. }


Message édité par MEI le 26-11-2009 à 15:46:38

---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 26-11-2009 à 14:34:49    

merci pour vos réponses, je m'y suis penché qu'aujourd'hui et mon problème est résolu, je récupère les informations que j'ai besoin dans le fichier.  
 
 :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed