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 :

[SimpleXML] plusieurs tag plusieurs attribut


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Par défaut [SimpleXML] plusieurs tag plusieurs attribut
    bonjour a tous,

    Alors voila mon petit souci qui vient surtout de ma méconnaissance de simple xml:

    XML de référence :

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../######">
        <item id="1" type="a" name="nom">
            <set name="a" val="111" />
            <set name="b" val="111" />
            <set name="c" val="111" />
            <set name="d" val="111" />
            <set name="e" val="111" />
            <set name="f" val="111" />
            <set name="g" val="111" />
            <set name="h" val="111" />
            <set name="i" val="111" />
            <set name="j" val="111" />
            <set name="k" val="111" />
            <set name="l" val="111" />
            <set name="m" val="111" />
            <set name="n" val="111" />
            <set name="o" val="111" />
            <set name="p" val="111" />
            <set name="q" val="111" />
            <for>
                <set stat="a" val="000" />
                <set stat="b" val="000" />
                <set stat="c" val="000" />
                <add stat="d" val="000" />
                <set stat="e" val="000" />
                <enchant val="0" stat="a" />
                <enchant val="0" stat="b" />
            </for>
        </item>
    </list>
    Alors voila mon but et de recupéré:

    item = id, type, name

    et ensuite dans les set part exemple a,b,c,d avec leur valeur or c'est ici que je bute completement.

    Et dans le for a,b,c avec leur valeurs.

    Le tout dans un foreach.

    Merci d'avance

    Exemple mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    foreach ($xml->item as $item) {
        echo
            $item['id'].
            $item['type'].
            $item['name'].
            $item->set['d'];

  2. #2
    Membre très actif
    Avatar de H2R file comme l'aire
    Homme Profil pro
    Pilote moto gp
    Inscrit en
    Février 2017
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Pilote moto gp

    Informations forums :
    Inscription : Février 2017
    Messages : 70
    Par défaut
    Salut
    je suis désoler mais je comprends pas ce que tu veux faire reexplique on est sur un forum tu peux prendre ton temps

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Par défaut
    Merci pour ta réponse.

    Globalement,

    J'ai une masse de fichier xml atypique "de mon point de vue" que je doit transformer en index et injecté dans une bdd et pour ça je doit récupérée:

    dans item => id, type, name
    et entre les balise item je doit récupéré certaine balise set en fonction de leur "name" et afficher leur "val"

    pour en sorti avoir un ligne par item de genre:

    item->id, item->type, item->name, valeur de set->a, valeur de set->d, valeur de set->y etc ...


    désolé si je ne suis pas très clair mais je ne vois pas comment l'imagé autrement.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Par défaut
    En grattant un peux sur internet j'ai réussi a faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach($xml->xpath('//item/set[@name="a"]') as $category)
    	{
    	    echo $category['val'] . '<br />';
    	}
    Qui me revoie bien la bonne valeur, maintenant la question serai plus de comment je peux l'integré a ma boucle pour avoir la bonne valeur associer au bon "item" ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	foreach ($xml->item as $item) {
    		echo 
    			$item['id'].
    			$item['type'].
    			$item['name'];
    	}

  5. #5
    Membre très actif
    Avatar de H2R file comme l'aire
    Homme Profil pro
    Pilote moto gp
    Inscrit en
    Février 2017
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Pilote moto gp

    Informations forums :
    Inscription : Février 2017
    Messages : 70
    Par défaut
    salut regarde ca
    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
     
    <?php 
    $xml = simplexml_load_file("tonFichier.xml");
    function mdr($xml){
        $setsAttr = [];
        $sets = $xml->item->set;
        $item = $xml->item;
        $itemAttr = [];
        for($itemLen = 0; $itemLen < count($item); $itemLen++){
            $itemAttr[$itemLen]["id"] = $item[$itemLen]["id"];
            $itemAttr[$itemLen]["type"] = $item[$itemLen]["type"];
            $itemAttr[$itemLen]["name"] = $item[$itemLen]["name"];
        }
        for($setsLen = 0; $setsLen < count($sets); $setsLen++){
            $setsAttr[$setsLen]["name"] = $sets[$setsLen]["name"];
            $setsAttr[$setsLen]["val"] = $sets[$setsLen]["val"];
        }
        return [
            "itemA" => $itemAttr,
            "setsA" => $setsAttr
        ];
    }
    $xmlData = mdr($xml);
    for($itemAlen = 0; $itemAlen < count($xmlData["itemA"]); $itemAlen++){
        echo(
            "balise item numero " . 
            $itemAlen . 
            ", id = " . 
            $xmlData["itemA"][$itemAlen]["id"] . 
            ", type = " . 
            $xmlData["itemA"][$itemAlen]["type"] . 
            ", name = " . 
            $xmlData["itemA"][$itemAlen]["name"] . 
            "<br/>"
        );
    }
    echo("<hr/>");
    for($setsAlen = 0; $setsAlen < count($xmlData["setsA"]); $setsAlen++){
        echo(
            "balise set numero " . 
            $setsAlen .
            ", name = " . 
            $xmlData["setsA"][$setsAlen]["name"] . 
            ",  val = " . 
            $xmlData["setsA"][$setsAlen]["val"] . "<br/>"
        );   
    }
    ?>
    et ton fichier xml à la premiére ligne ne contien rien donc ca génére des erreurs

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Par défaut
    Je te remercie en effet ton code fonctione mais mon problème maintenant pour le coup et de savoir comment je peux utilisez ce code pour généré des INSERT sql ?

    Malheureusement j'ai 22600 item ~ repartie dans 197 fichier xml autant passer les fichier un à un par un script php ne me fait pas peur.


    Ps et en effet désolé j'ai vraiment pas était très clair dans mes postes précédent et j'en suis vraiment désolé

Discussions similaires

  1. [Debutant][XSLT] Recuperer un parametre et plusieur attributs
    Par zied_dev dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 01/09/2007, 09h58
  2. [DOM] DOM et plusieurs attributs
    Par Tyler Durden dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/08/2007, 22h03
  3. [XSLT] Select sur plusieurs attributs
    Par maitrebn dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 28/11/2006, 13h13
  4. [XSLT] Tester la valeur de plusieurs attributs
    Par NicaeaCivitas dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 23/10/2006, 17h25
  5. method avec plusieurs attributs
    Par *alexandre* dans le forum JSF
    Réponses: 1
    Dernier message: 03/08/2006, 10h42

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