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] Recherche dans un fichier XML via XPath


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut [DOM] Recherche dans un fichier XML via XPath
    Bonjour,

    J'ai un fichier XML pour un sitemap de la structure suivante :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?xml version="1.0"?>
    <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
      <url>
        <loc>http://localhost/index.php</loc>
      </url>
    <url>
        <loc>http://localhost/contact.php</loc>
      </url>
    <url>
        <loc>http://localhost/presentation.php</loc>
      </url>
    <url>
        <loc>etc...</loc>
      </url>
    </urlset>

    J'aimerais simplement rechercher si une URL est présente dans mon fichier XML ou non.

    Exemple:

    Je veux tester si "http://localhost/index.php" est bien dans mon fichier.

    alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...
     
    $xp = new DOMXpath($dom);
     
    $expr_recherche = "Que dois je mettre ici ?";
     
    $result= $xp->query($expr_recherche);
    Je sais ensuite comment traiter les données, je n'arrive simplement pas à passer une expression de recherche pour trouver "http://localhost/index.php" dans le fichier xml!

    J'ai cherché, je ne trouve pas! si vous pouviez m'indiquer l'expression ce serait sympa!

    Merci beaucoup.

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Bon, j'ai vainement essayé de charger un xml en php pour tester l'expression, mais je n'ai pas trop le temps donc je te la donne (sans grande conviction)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = '//[url="http://localhost/index.php"]';
    Dans tous les cas, sur le W3schools tu as pas mal d'exemples : http://www.w3schools.com/xpath/xpath_syntax.asp

  3. #3
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut
    C'est bien gentil, mais malheureusement ça ne fonctionne pas!

    J'ai été voir sur le site j'ai trouvé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "/urlset/url[loc='http://localhost/test.php']/loc"
    Mais ça ne fonctionne pas non plus!

    Ou alors je n'affiche pas comme il faut les données ensuite, car je n'ai pas de message d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach($result as $key => $val){
     
    echo $key . '-' . $val;
     
    }
    Mais j'ai une page blanche, aucun résultat...

  4. #4
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Pourrais tu donner le code qui permet de charger ton xml, que je puisse tester chez moi directement?

  5. #5
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut
    En fait j'ai fait une classe SiteMap extends domDocument.

    Ca revient au meme de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $dom = new DOMDocument();
    $dom->load('sitemap.xml');
    $dom->formatOutput=true;
     
    $xp = new DOMXpath($dom);
     
    $result=$xp->query("/urlset/url[loc='http://localhost/test.php']/loc");
     
    foreach($result as $key => $val){
     
    echo $key . '-' . $val;
     
    }
    Le but de la manip, c'est de déterminer si une URL passer dans "$xp->query" est présente ou non dans le fichier.

    Si elle n'est pas présente, on ajoute un noeud. Donc c'est pour ça que j'ai besoin de faire cette recherche...

  6. #6
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Je suis désolé, je n'arrive pas du tout a charger un xml dans un DOMDocument, il me parle de paramètre long dans la classe ce qui n'a rien a voir avec le prototype donné dans la doc.

    Par contre je me suis trompé dans l'xpath tout a l'heure ca serait plutot ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = '//[loc="http://localhost/index.php"]';

  7. #7
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut
    Ca ne marche pas non plus. Ce n'est pas grave je vais continuer de chercher

    En tout cas merci !

Discussions similaires

  1. [XSLT] Comment rechercher dans un fichier xml
    Par abdoulax dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 22/10/2006, 19h28
  2. Probleme dans mon code recherche dans un fichier Xml
    Par dederfred dans le forum Delphi
    Réponses: 11
    Dernier message: 21/10/2006, 16h51
  3. Faire une recherche dans un fichier XML
    Par Devilish_Seraph dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 21/01/2006, 13h41
  4. recherche dans un fichier xml (castor)
    Par pingoui dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 06/09/2004, 14h28
  5. recherche dans un document xml via DOM
    Par ndoye_zaff dans le forum APIs
    Réponses: 5
    Dernier message: 11/06/2003, 14h44

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