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érer certaines entrées selon un attribut


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 2
    Par défaut [DOM XML]Récupérer certaines entrées selon un attribut
    Bonjour à tous, je suis novice dans le monde du XML par contre je connais bien le PHP, je voudrais utiliser mon document xml comme une base de donnée.
    Voici à quoi ressemble mon document XML:

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <partitions>
    <morceau id="1" auteur="Sor" genre="Valse" tonal="Re min" diffi="0" titre="Valse n.5" />
    <morceau id="2" auteur="Carulli" genre="Valse" tonal="Fa maj" diffi="3" titre="luciano" />
    </partitions>

    je cherche le code qui va me permettre de ne sélectionner que certaines lignes:
    J'ai un formulaire qui permet de choisir l'attribut par le quel on recherche et la valeur de cet attribut.
    exemple, je coche l'attribut "genre" et je met comme valeur "Valse" le script devrait m'afficher toutes les lignes ou l'attribut "genre" est "valse". (un moteur de recherche en gros.

    Vu que c'est le tout début je n'ai pas grand chose dans mon application php à vous montrer....

    voici tout de même mon maigre début:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $xmldoc="admin/results.xml";
    $attri = $_GET['attribut'];
    $valeur= $_GET['valeur'];
     
     
    $dom = domxml_open_file($xmldoc) or die ("Impossible de l'ouvrir");
    $operations = $dom->get_elements_by_tagname("morceau");
     
    ?>
    Merci d'avance

  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
    En parcourant les noeuds morceau :
    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
    // Pour test
    $_GET['attribut'] = 'auteur';
    $_GET['valeur'] = 'Carulli';
     
    $xmldoc = 'partitions.xml';
    $attri = $_GET['attribut'];
    $valeur = $_GET['valeur'];
     
    $dom = domxml_open_file($xmldoc) or die("Impossible de l'ouvrir");
    $operations = $dom->get_elements_by_tagname("morceau");
    foreach ($operations as $op) {
        if ($op->node_type() == XML_ELEMENT_NODE) { // Passer d'un DOMNode à un DOMElement
            if ($op->get_attribute($attri) == $valeur) {
                echo "Le morceau numéro = " . $op->get_attribute('id') . " correspond<br/>";
            }
        }
    }
    En utilisant une expression XPath :
    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
    // Pour test
    $_GET['attribut'] = 'auteur';
    $_GET['valeur'] = 'Carulli';
     
    $xmldoc = 'partitions.xml';
    $attri = $_GET['attribut'];
    $valeur = $_GET['valeur'];
     
    $dom = domxml_open_file($xmldoc) or die("Impossible de l'ouvrir");
    $xpath = $dom->xpath_new_context();
    $res = $xpath->xpath_eval("/partitions/morceau[@$attri='$valeur']");
    foreach ($res->nodeset as $morceau) {
        echo "Le morceau numéro = " . $morceau->get_attribute('id') . " correspond<br/>";
     
    }
    (testé sur une version 4.4.6)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 2
    Par défaut
    Super c'est nickel!
    Merci beaucoup!

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 65
    Par défaut
    MERCI BEAUCOUP !!!!!
    Bonne journée

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

Discussions similaires

  1. [DOM XML] Récupérer la valeur d'un tagname selon son attribut
    Par nkordiko dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 11/04/2012, 11h04
  2. [DOM XML] Récupérer et enregistrer le fichier
    Par cadoudal56 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 29/01/2010, 17h21
  3. [XML] quelle différence entre utiliser un attribut ou un tag ?
    Par clavier12AZQSWX dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 02/09/2009, 16h52
  4. [Linq to Xml] Récupérer la valeur d'un attribut
    Par teddyalbina dans le forum Linq
    Réponses: 7
    Dernier message: 19/10/2008, 18h26
  5. [DOM] [Débutant] Récupérer texte entre deux balises
    Par webrider dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 27/02/2007, 09h49

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