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 XML] Récupération des attributs dans un flux xml


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 204
    Points : 79
    Points
    79
    Par défaut [DOM XML] Récupération des attributs dans un flux xml
    Bonjour,
    dans mon formulaire je constitu un flux de données que je récupère dans une autre page.J'aimerai récupérer ces données afin de constituer mon ordre sql.
    Voilà mon flux:
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <root>
    <critere id="1" letype="IC" lsign="EGA" />
    <critere id="2" letype="VO" lsign="SUP" />
    <critere id="3" letype="RP" lsign="INF" />
    </root>

    j'arrives avec un foreach à afficher chaque noeud sans pouvoir m'en servir.En effet j'ai besoin des valeurs de letype et lsign que je mettrai dans deux tableaux afin de les utiliser pour la constitution de mon ordre sql.
    Je vous remercie d'avance de votre aide.

  2. #2
    Expert éminent sénior

    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
    Points : 17 778
    Points
    17 778
    Par défaut
    D'accord mais pourrait-on avoir votre code et détail des plus importants : l'extension utilisée (SimpleXML, DOM, DOM XML) à moins que vous n'ayez employé autre chose ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 204
    Points : 79
    Points
    79
    Par défaut
    Merci de votre précision.
    Dans mon formuliare je sélectionne mes critères que je mets dans un flux xml
    lorsque je soumets le formulaire,je passe le flux par un champ caché.
    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
     
    <script language="javascript">
     
    function ajout_citere(){
    var xCrit = new ActiveXObject("MSXML.DomDocument");
    xCrit.loadXML("<root />");
     
    var xNoeud = xCrit.createElement("critere");   // Création du nouveau noeud...
    xNoeud.setAttribute("id", ++cptCrit);          // ... avec ses attributs
    xNoeud.setAttribute("letype", letype);
    xNoeud.setAttribute("lsign", lesigne);
    xCrit.documentElement.appendChild(xNoeud); 
    }
     
    function valide_form(){
     
    document.formulaire.lecritere.value=xCrit.xml
     
    document.formulaire.submit();
     
    }
    <script>
    et je le récupère
    dans cette page dont voilà le code de récupération.
    Puis je l'affiche.Mon souci c'est de pouvoir mettre dans deux tableaux
    les valeurs des noeuds attributs dont je connais les noms:letype et lsign.
    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
     
    <?php 
     
     
    	if(!empty($_POST['lecritere'])){
     
    		$lecritere=$_POST['lecritere'];
    	}
     
    	$dom=domxml_open_mem("$lecritere") or die ("Impossible de l'ouvrir");
     
     
     
    	$xpath = $dom->xpath_new_context(); 
    	$operations = $xpath->xpath_eval('//critere'); 
     
    	foreach ($operations->nodeset as $i => $operation) 
    		{ 
        		$attributes = $operation->attributes(); 
     
        			foreach ($attributes as $attribute) 
        				{ 
            				echo 'node #', $i, ' ', $attribute->name, ' = ', $attribute->value, '<br />'; 
        				} 
    		} 
     
     
    ?>
    j'ai bien l'affichage du n° du noeud, du nom et de la valeur.
    je vous remercie de votre aide !

  4. #4
    Expert éminent sénior

    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
    Points : 17 778
    Points
    17 778
    Par défaut
    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
     
    <?php
    $dom = domxml_open_file("criteres.xml") or die ("Impossible de l'ouvrir");
    $operations = $dom->get_elements_by_tagname('critere');
    $letype = array();
    $lsign = array();
    foreach ($operations as $operation)
    {
        $letype[] = $operation->get_attribute('letype');
        $lsign[] = $operation->get_attribute('lsign');
    }
     
     
    echo '<pre>';
    print_r($letype);
    print_r($lsign);
    echo '</pre>';
    ?>
    Par contre la partie XPath sur un document aussi simple n'étant pas justifiée, je l'ai viré Mais si vous souhaitez la garder :
    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
     
    <?php
    $dom=domxml_open_file("criteres.xml") or die ("Impossible de l'ouvrir");
    $xpath = $dom->xpath_new_context();
    $operations = $xpath->xpath_eval('//critere');
    $letype = array();
    $lsign = array();
    foreach ($operations->nodeset as $operation)
    {
        $letype[] = $operation->get_attribute('letype');
        $lsign[] = $operation->get_attribute('lsign');
    }
     
     
    echo '<pre>';
    print_r($letype);
    print_r($lsign);
    echo '</pre>';
    ?>

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 204
    Points : 79
    Points
    79
    Par défaut
    Merci,
    je vais tout de suite corriger mon code.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 204
    Points : 79
    Points
    79
    Par défaut
    Merci ça marche !

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

Discussions similaires

  1. Extraire des data d'un flux xml avec des attributs
    Par kairi092 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 04/01/2015, 23h13
  2. [JDOM] Récupération des feuilles dans un document XML
    Par imenblue dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 01/05/2011, 00h48
  3. lire des valeurs dans un flux xml
    Par zooffy dans le forum ASP.NET
    Réponses: 9
    Dernier message: 03/04/2009, 14h07
  4. [A-02] Récupération des attributs d'un fichier xml
    Par kizou dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/03/2009, 12h31
  5. Ecrire des donnes dans un flux xml
    Par jul-974 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 02/06/2007, 01h48

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