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] Moteur de recherche pour XML


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Par défaut [DOM] Moteur de recherche pour XML
    Bonjour , je souhaiterai créer un moteur de recherche en php pour recuperer des informations dans un fichier xml
    donc voila mon fichier 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
    <?xml version="1.0" encoding="windows-1252"?>
    <BIENS>
    <BIEN>
    <NEGOCIATEUR>azerty</NEGOCIATEUR>
    <VILLE_OFFRE>PARIS 16</VILLE_OFFRE>
    <CATEGORIE>APPARTEMENT</CATEGORIE>
    <NB_PIECES>4</NB_PIECES>
    <TEXTE_FR>Paris 16e arr.  Rue des vignes.
     
    Appartement de 4 pièces de 93 m2 carrez, au 6ème étage avec ascenseur,entièrement refait, 3 chambres  avec une grande entrée une cuisine séparée et équipée, une salle de bain, wc séparé, belle hauteur sous plafond, parquet, moulures, cheminée dans chaque pièce, parties communes de haut standing, accès sécurisé par digicode et vidéophone, cave en sous sol.
    Appartement vendu rénové.
    r</TEXTE_FR>
    </BIEN>
    <BIEN>
    <NEGOCIATEUR>querty</NEGOCIATEUR>
    <VILLE_OFFRE>NEUILLY SUR SEINE</VILLE_OFFRE>
    <CATEGORIE>APPARTEMENT</CATEGORIE>
    <NB_PIECES>7</NB_PIECES>
    <TEXTE_FR>Peniche, Un hôtel particulier flottant construit par un architecte de renom avec une coque béton. Elle est non navigable, frais très réduit pour l entretien de la coque.  360 m2 sur 2 étages + 2 terrasses bien exposé au calme avec vue dégagée sur la seine et les canaux. Affectation bureau possible. Pas de frais de notaire. A voir !
    </BIEN>
    </BIENS>
    je voudrais quand on rentre le nom de la ville dans le champ il m'affiche toute les informations qui correspondent ( le negociateur ,la categorie le nombre de piece , le texte_fr...)

  2. #2
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    Ile xiste pas mal de chose pour recuperer des infos dans un xml.
    Voici une liste non exhaustive :
    http://fr.php.net/manual/fr/refs.xml.php

    Personnellement, je connais DOM avec XPATH, et ca fonctionne pas mal.
    XPATH permet de lancer une recherche dans un fichier XML et de recuperer tous les noeuds correspondant aux cirtères.

    Z.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Par défaut
    j'arrive a récupérer toute les donnée de mon xml et les afficher avec ce code
    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
    <?php
    	  $dom = new DomDocument;	  
    	  $dom->load("Ludwig.XML");
     
    	  $biens = $dom->getElementsByTagName("BIEN");
    	  foreach($biens as $BIEN )
    	  {
     
    		  $negociateurs = $BIEN->getElementsByTagName("NEGOCIATEUR");
    		  $negociateur = $negociateurs->item(0)->nodeValue;  //recupere tous les nom des negociateurs
     
     
    		  $villes = $BIEN->getElementsByTagName("VILLE_OFFRE");
    		  $ville = $villes->item(0)->nodeValue;  //recuperer tous les villes
     
    		  $annonces = $BIEN->getElementsByTagName("TEXTE_FR");
    		  $annonce = $annonces->item(0)->nodeValue; //recupere toutes les annonces
     
    		  echo "$negociateur - $ville - $annonce <br /> <br />" ;
     
    	  }
    je voulais savoir si il était possible de faire une recherche directement sur la variable $ville par exemple vu qu'elle recupere toutes villes ?

  4. #4
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    Il faut utiliser xpath : c'est lui qui permet de construire la requete, un espece de google du xml.
    Par exemple, avec ton xml (je n'ai pas testé, et ca faoit longtemps que je n'ai pas fait de 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
    <?php
    //cahrgement de ton fichier
    $doc = new DOMDocument;
    $doc->Load("Ludwig.XML");
     
    //creation d'un objet xpath, utiliser pour la requete xpath
    $xpath = new DOMXPath($doc);
     
    //construit la requete : 
    //Rechercher tous les noeuds BIEN sous le chemin /BIENS/ dont le noeud fils VILLE_OFFRE est égal à 'PARIS 16'
    $query = "/BIENS/BIEN[VILLE_OFFRE='PARIS 16']";
     
    //execute la requete
    $noeuds_resultats = $xpath->query($query);
     
    //parcours les resultats
    foreach ($noeuds_resultats as noeud) {
      //action
      }
    En tres gros, c'est comme une base de donnée : tu la charges, tu prepare une requete que tu executes, et tu utilises les resultats

    Z.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Par défaut
    ah super , sa marche bien merci
    j'aurais une autre question comment je peux faire pour faire une recherche avec plusieurs critères par exemple , que les appartement de PARIS 16 ou que les appartements qui ont que 3 pièces

  6. #6
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $query = "/BIENS/BIEN[VILLE_OFFRE='PARIS 16'][NB_PIECES=3]";
     
    ou
     
    $query = "/BIENS/BIEN[VILLE_OFFRE='PARIS 16' and NB_PIECES=3]
    Z.

Discussions similaires

  1. Moteur de recherche pour un site Web
    Par itmak dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 07/12/2007, 18h05
  2. Indexation / Moteur de recherche spécial XML
    Par norkius dans le forum XQUERY/SGBD
    Réponses: 2
    Dernier message: 02/10/2007, 15h23
  3. [JBoss Portal] Moteur de recherche pour Jboss portal
    Par maikof dans le forum Portails
    Réponses: 3
    Dernier message: 11/05/2007, 07h28
  4. Moteur de recherche pour le site
    Par Mister Nono dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 14/01/2007, 20h33
  5. Moteur de recherche pour base de données
    Par jolinar13 dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 17/12/2006, 11h12

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