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 :

[XML] PHP/Xml Problème pour récupérer des valeurs


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Directeur Technique Backoffice
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur Technique Backoffice

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Par défaut [XML] PHP/Xml Problème pour récupérer des valeurs
    Bonjour,

    Je dois traiter un fichier xml avec un script en php et j'ai un problème pour récupérer des valeurs. Le fichier xml est gros (très très gros, 9Mo) mais ca ne m'empèche pas de récupérer certaines infos.

    Je vous mets ici la partie qui m'intéresse, n'hésitez pas si besoin de plus d'infos mais je ne pourrais pas fournir le xml

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    <?xml version="1.0" encoding="iso-8859-1"?>
    <company tenantId="0" xmlns="urn:com/ieffects/xml/types" xmlns:p="urn:com/ieffects/xml/html" xmlns:page="urn:com/ieffects/xml/page" xmlns:fournisseurTypes="urn:com/ieffects/xml/fournisseur/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    	<companyShop id="0" xmlns="urn:com/ieffects/xml/types"/>
    	<shop id="1">
    		<shopFields xsi:type="fournisseurTypes:FournisseurShopFields">
    			<fournisseurTypes:appConfig codeEnseigne="Fournisseur" deliveryDate="false" icon="/opt/import/images/0/img1.png" partialDelivery="false" title=""/>
    			<fournisseurTypes:appConfig codeEnseigne="101" deliveryDate="false" icon="/opt/import/images/0/img2.png" partialDelivery="false" title=""/>
    		</shopFields>
    		<home>
    			<topLevelDepartmentId>U0cwMDAwMDE=</topLevelDepartmentId>
    			<topLevelDepartmentId>U0cwMDAwMDI=</topLevelDepartmentId>
    			<topLevelDepartmentId>U0cwMDAwMDM=</topLevelDepartmentId>
    			<topLevelDepartmentId>U0cwMDAwMDQ=</topLevelDepartmentId>
    			<topLevelDepartmentId>U0cwMDAwMDU=</topLevelDepartmentId>
    			<topLevelDepartmentId>U0cwMDAwMDY=</topLevelDepartmentId>
    			<topLevelDepartmentId>U0cwMDAwMDc=</topLevelDepartmentId>
    			<topLevelDepartmentId>U0cwMDAwMDg=</topLevelDepartmentId>
    			<topLevelDepartmentId>U0cwMDAwMDk=</topLevelDepartmentId>
    		</home>
    		<currency exchangeRate="1" iso="EUR"/>
    		<article baseUnit="Unité(s)" brand="Marque1" gtin="8718291840497" icon="/opt/import/images/Products/G/5204/1aa8f7ed-c03e-42df-8c66-a4a501479906.jpg" id="MDUyMDQxODQwNDk=" locked="0" name="article 1" number="05204184049" parentDepartmentId="RkMxMDA0MDM=" sortRank="1" supplierArticleNumber="840497" xsi:type="StandardArticle">
    			<salesUnit name="1 Unité(s)" quantity="1"/>
    			<articleFields textSearchHint="17PNA071|17PNP070|18PNP196|2017CGEDESS396|" xsi:type="fournisseurTypes:FournisseurStandardArticleFields">
    				<fournisseurTypes:codeEnseignes>101 Fournisseur</fournisseurTypes:codeEnseignes>
    			</articleFields>
    			<cellGroup name="Description">
    				<page:cell text="description du produit" xsi:type="page:TextCell"/>
    			</cellGroup>
    			<cellGroup name="Informations">
    				<page:cell key="EAN" xsi:type="page:KeyValueCell">
    					<page:value>8718291840497</page:value>
    				</page:cell>
    				<page:cell key="Référence métier" xsi:type="page:KeyValueCell">
    					<page:value>05204184049</page:value>
    				</page:cell>
    			</cellGroup>
    			<cellGroup name="Caractéristiques">
    				<page:cell key="adapté à un montage mural" xsi:type="page:KeyValueCell">
    					<page:value>Oui</page:value>
    				</page:cell>
    				<page:cell key="adapté à une suspension pendulaire" xsi:type="page:KeyValueCell">
    					<page:value>Oui</page:value>
    				</page:cell>
    				<page:cell key="adapté à un montage au plafond" xsi:type="page:KeyValueCell">
    					<page:value>Oui</page:value>
    				</page:cell>
    				<page:cell key="adapté à un montage encastré" xsi:type="page:KeyValueCell">
    					<page:value>Non</page:value>
    				</page:cell>
    				<page:cell key="adapté à un montage en saillie" xsi:type="page:KeyValueCell">
    					<page:value>Oui</page:value>
    				</page:cell>
    			</cellGroup>
    			<image>/opt/import/images/Products/G/5204/1aa8f7ed-c03e-42df-8c66-a4a501479906.jpg</image>
    			<priceDisplayUnit name="1 Unité(s)" quantity="1"/>
    		</article>
    	</shop>
    </company>
    J'ai essayé de faire un fichier minimaliste avec les infos que je recherche afin d'avoir de l'aide de votre part ^^

    Donc ce que je cherche à avoir ce sont les valeurs dans les noeuds <cellGroup>.

    J'arrive à avoir le "name" des noeuds mais pas a rentrer dans le noeud pour boucler et obtenir les infos

    Mon code 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
     
    <?php
     
    $xml_file = $base_folder . "fournisseur.xml";
     
    if (file_exists($xml_file)) {
        $xml = simplexml_load_file($xml_file) or die("Error: Cannot create object");
     
        $articles = $xml->shop->article;
        foreach ($articles as $article) {
            if ((string)$cellGroup['name'] == "Caractéristiques") {
                print_r($cellgroup);
                foreach ($cellGroup->children() as $cell){
                    print_r($cell);
                }
            }
        }
    }
     
    ?>
    Le retour de printr_($cellgroup) est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SimpleXMLElement Object
     
    (
     
        [@attributes] => Array
     
            (
     
                [name] => Caractéristiques
     
            )
     
    )
    Le retour de print_r($cell) est: ... rien en faite, j'ai l'impression de ne pas rentrer dedans :'(


    J'ai essayé plusieurs méthodes pour avoir le contenu du noeud cellGroup mais je n'affiche jamais mes données. J'ai besoin de votre aide, please help!

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Si tu ne passes pas le namespace des enfants que tu recherches à la méthode children, ça ne peut pas marcher:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ($cellGroup->children('urn:com/ieffects/xml/page') as $cell) {
        print_r($cell);
    }


    Pour un gros fichier, XMLReader peut constituer une bonne alternative par rapport à simpleXML. (Moins de mémoire, plus rapide si c'est bien écrit, mais moins facile à utiliser).

  3. #3
    Membre averti
    Homme Profil pro
    Directeur Technique Backoffice
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur Technique Backoffice

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Par défaut
    YES!!!
    Merci beaucoup, je te ferais bien un bisou mais ... euh

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/10/2017, 10h00
  2. Réponses: 2
    Dernier message: 27/02/2008, 09h24
  3. Réponses: 6
    Dernier message: 28/12/2007, 22h34
  4. [SimpleXML] Parser un XML et en récupérer des valeurs
    Par mickael.be dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 15/04/2006, 15h08
  5. problème pour récupérer une valeur dans ma bd (débutante)
    Par auryn111 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/08/2005, 17h49

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