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

XML/XSL et SOAP Discussion :

Faire une recherche dans un fichier XML


Sujet :

XML/XSL et SOAP

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Faire une recherche dans un fichier XML
    Bonjour!

    Je voulais savoir si vous pouviez m'aiguiller sur la façon d'effectuer une recherche sur un document XML ?

    Exemple :
    Rechercher : tutoriaux + XML
    entre les balises <longue_description></longue_description>
    et retourner l' <id> de l' <item> dans lequel au moins un des deux mots à été trouvé.


    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
     
    <item>
      <id>1</id>
        <longue_description>
           La partie XML du site Developpez.com, des tutoriaux XML, XSL et SOAP, des forums
    de discutions concernant le XML.
        </longue_description>
    </item>
    <item>
      <id>2</id>
        <longue_description>
           java,JAVA,Java,JBuilder,jbuilder,JBUILDER,Borland JBuilder 3,jbuilder
    fondation,linux,Linux,jababeans,JavaBeans,inprise jbuilder,EJB,applets,Applets,JDK,jdk ...
        </longue_description>
    </item>

    PS: Si vous avez des tutoriaux clairs et concis sur le sujet, je prend aussi (j'ai pas trouvé )... Et si vous avez une source existante pour appuyer, c'est encore mieux!

    Merci bien!

  2. #2
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Salut,

    As-tu regarder les tuto de ce site?

    http://xml.developpez.com/cours/

    C'est XPath qui va te permettre de naviguer dans ton document XML et généralement afin de faire les transformation nécessaire tu utilisera une feuille de style (XSLT anciennement XSL)!

    Sinon ici il y a un très bon site:

    http://gilles.chagnon.free.fr/cours/xml/index.html

    Qui d'ailleurs viens d'être mis à jour (pas mal le nouveau design en tout cas mieux qu'avant)!

    Bonne Chance

    ++

    Thierry
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Oui j'avais regardé mais je trouve pas ce qu'il me faut... Je viens de reparcourir XPath, mais les balises me chaffouinent.
    Quand ils mettent <BBB id="12"><id> , c'est pareil que <id>12</id> ??

  4. #4
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Pour séectionné un attribut faut mettre un @ devant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:value-of select="/BBB/@id"/>
    Oublie pas que XML est case sensitive donc toto != Toto!
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  5. #5
    Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Dans ce cas la alors, pour choisir <longue_description>, il faut que j'écrive :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:value-of select="/item/id/@longue_description" />
    ??

  6. #6
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Ci item est l'élément root du xml oui sinon sans le / en premier.

    Car en xml il existe le / qui se citue juste avant la balise root!
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  7. #7
    Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Ok! Je vais tenter ça alors... Mais euh... Je repasserai surement!

    Merci beaucoup en tout cas!

  8. #8
    Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Si ça interresse quelqu'un d'autre, j'ai reussi en procedant de la façon suivante :

    PHP :
    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
     
    <?
    // Lecture d'un fichier XML
    function lire_xml($fichier,$item,$champs) {
       // on lit le fichier
       if($chaine = @implode("",@file($fichier))) {
          // on explode sur <item>
          $tmp = preg_split("/<\/?".$item.">/",$chaine);
          // pour chaque <item>
          for($i=1;$i<sizeof($tmp)-1;$i+=2)
             // on lit les champs demandés <champ>
             foreach($champs as $champ) {
                $tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]);
                // on ajoute au tableau
                $tmp3[$i-1][] = @$tmp2[1];
             }
          // et on retourne le tableau
          return $tmp3;
       }
    }
     
    $flux_rss = 'http://www.fluxrss.com/rss.php';
     
    $xml = lire_xml("$flux_rss","item",array("id","longue_description"));
    // et on affiche...
     
    echo '<ul>';
    foreach($xml as $row)
    {
    	echo '<li>'
                     // $row[0] affiche l'id
    		.$row[0].'<br />'
                     // $row[1] affiche l'id
    		.$row[1]
    		.'</li>';
    }
    echo '</ul>';
    ?>

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

Discussions similaires

  1. Comment faire une somme dans un fichier xml
    Par netdoux dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 01/03/2012, 17h42
  2. Comment faire une recherche dans un fichier?
    Par djisse dans le forum Entrée/Sortie
    Réponses: 15
    Dernier message: 20/07/2009, 15h27
  3. faire une recherche dans des fichiers
    Par 7rouz dans le forum Windows
    Réponses: 1
    Dernier message: 05/03/2009, 21h36
  4. Rechercher une expression dans un fichier xml
    Par snopims dans le forum ASP.NET
    Réponses: 4
    Dernier message: 08/12/2008, 12h03
  5. [C#][xml][regexp] Recherche d'une regexp dans un fichier xml
    Par LeJocker dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/10/2005, 12h29

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