Requête sur un flux xml?
11 messages
• Page 1 sur 1
- cuirwebmaster
- Nouveau WRInaute

- Messages: 29
- Inscription: 4 Mai 2007
Requête sur un flux xml?
Bonsoir, ma question est certainement très bête mais j'avoue ma totale "novicitude"!
j'ai un flux xml qui ressemble à ça (Les connaisseurs reconnaitront l'origine!
)
Pour afficher ce flux j'utilise ceci
Et ma question est: Puis-je effectuer une requête sur ce flux XML afin de n'afficher que les entités dont la balise <nom_departement> est par exemple "Normandie"?
Merci d'avance
j'ai un flux xml qui ressemble à ça (Les connaisseurs reconnaitront l'origine!
- Code: Tout sélectionner
<?xml version="1.0" encoding="UTF-8" ?>
<profil>
<item>
<id>5286774</id>
<login>XXXXX</login>
<sexe>Un homme</sexe>
<age>26</age>
<yeux>Vert</yeux>
<cheveux>Brun</cheveux>
<pays>France</pays>
<region>Pays de la Loire</region>
<departement>44</departement>
<nom_departement>Loire Atlantique</nom_departement>
<ville>Nantes</ville>
<description>bla bla bal</description>
<webcam>no</webcam>
</item>
Pour afficher ce flux j'utilise ceci
- Code: Tout sélectionner
<?php
$file = "XXX.com/flux/XML.php?sexe=0&age_max=25&pays=fr";
$flux_xml = implode("", @file($file));
eregi("<item>(.*)</item>",$flux_xml,$rawresults);
$results = explode("<item",$rawresults[0]);
$max = count($results)-1;
for($i=0;$i<$max;$i++){
eregi("<login>(.*)</login>",$results[$i+1], $login);
eregi("<id>(.*)</id>",$results[$i+1], $id);
eregi("<photo>(.*)</photo>",$results[$i+1], $photo);
eregi("<sexe>(.*)</sexe>",$results[$i+1], $sexe);
eregi("<age>(.*)</age>",$results[$i+1], $age);
eregi("<yeux>(.*)</yeux>",$results[$i+1], $yeux);
eregi("<cheveux>(.*)</cheveux>",$results[$i+1], $cheveux);
eregi("<departement>(.*)</departement>",$results[$i+1], $departement);
echo "<img src=\"XXX.com/".$photo[1]."\" alt=\"photo de ".$login[1]."\" /><br />";
echo "login : ".$login[1]."<br />\n";
echo "sexe : ".$sexe[1]."<br />\n";
echo "age : ".$age[1]."<br />\n";
echo "yeux : ".$yeux[1]."<br />\n";
echo "cheveux : ".$cheveux[1]."<br />\n";
echo "département : ".$departement[1]."<br />\n";
echo "<a href=\"XXX/u_page.php?id=1248445\">Voir le profil</a><br /><br />\n\n";
}
?>
Et ma question est: Puis-je effectuer une requête sur ce flux XML afin de n'afficher que les entités dont la balise <nom_departement> est par exemple "Normandie"?
Merci d'avance
- audit.referencement
- WRInaute discret

- Messages: 125
- Inscription: 16 Fév 2008
Lol, j'ai reconnu l'origine, effectivement.
Aucun problème pour ce que tu souhaites faire, une simple condition suffit.
Aucun problème pour ce que tu souhaites faire, une simple condition suffit.
- cuirwebmaster
- Nouveau WRInaute

- Messages: 29
- Inscription: 4 Mai 2007
Je pensais avoir compris le principe des conditions, cependant il n'en est rien
Est-ce juste une nouvelle variable à créer? Cela a t-il quelques chose a voir avec le XSL? J'ai cherché des exemples de "requête" sur du XML mais je n'ai rien trouvé? Est-ce a base de if/else?
Si une bonne âme voulait bien me donner un nouvel indice !!!
Est-ce juste une nouvelle variable à créer? Cela a t-il quelques chose a voir avec le XSL? J'ai cherché des exemples de "requête" sur du XML mais je n'ai rien trouvé? Est-ce a base de if/else?
Si une bonne âme voulait bien me donner un nouvel indice !!!
-

webmasterlamogere - WRInaute passionné

- Messages: 1874
- Inscription: 17 Déc 2006
tu peut ajouter le test autour des "echo" :
- Code: Tout sélectionner
<?php
$file = "XXX.com/flux/XML.php?sexe=0&age_max=25&pays=fr";
$flux_xml = implode("", @file($file));
eregi("<item>(.*)</item>",$flux_xml,$rawresults);
$results = explode("<item",$rawresults[0]);
$max = count($results)-1;
for($i=0;$i<$max;$i++){
eregi("<login>(.*)</login>",$results[$i+1], $login);
eregi("<id>(.*)</id>",$results[$i+1], $id);
eregi("<photo>(.*)</photo>",$results[$i+1], $photo);
eregi("<sexe>(.*)</sexe>",$results[$i+1], $sexe);
eregi("<age>(.*)</age>",$results[$i+1], $age);
eregi("<yeux>(.*)</yeux>",$results[$i+1], $yeux);
eregi("<cheveux>(.*)</cheveux>",$results[$i+1], $cheveux);
eregi("<departement>(.*)</departement>",$results[$i+1], $departement);
if ($departement[1] == "Normandie") {
echo "<img src=\"XXX.com/".$photo[1]."\" alt=\"photo de ".$login[1]."\" /><br />";
echo "login : ".$login[1]."<br />\n";
echo "sexe : ".$sexe[1]."<br />\n";
echo "age : ".$age[1]."<br />\n";
echo "yeux : ".$yeux[1]."<br />\n";
echo "cheveux : ".$cheveux[1]."<br />\n";
echo "département : ".$departement[1]."<br />\n";
echo "<a href=\"XXX/u_page.php?id=1248445\">Voir le profil</a><br /><br />\n\n";
}
}
?>
-

bproductiv - WRInaute accro

- Messages: 4146
- Inscription: 27 Déc 2004
il y a des classe pour manipuler le xml qui existent et open source
- cuirwebmaster
- Nouveau WRInaute

- Messages: 29
- Inscription: 4 Mai 2007
Bacteries a écrit:Oui voilà, y'a des classes pour manipuler du XML, via du xpath (langage de requête pour le XML) ou autre.
Oui j'ai parcouru la doc xpath mais j'avoue ne rien n'y comprendre. Cependant il faudra bien que je m'y mette afin d'exploiter pleinement les possibilités offertes par le xml. Cependant mes connaissances sont maigres tant en php qu'en xml. Il faut que je reprenne tout depuis le début
J'en profite pour soulever un autre problème que je rencontre avec ce flux. Il contient des balises description qui incluent parfois des caractères spéciaux. Le contenu est dans ce cas entouré par des <
webmasterlamogere - WRInaute passionné

- Messages: 1874
- Inscription: 17 Déc 2006
<![CDATA[ .. ]]> permet de mettre du texte brut à l'intérieur sans avoir à le modifier avec des é par exemple
- cuirwebmaster
- Nouveau WRInaute

- Messages: 29
- Inscription: 4 Mai 2007
webmasterlamogere a écrit:<![CDATA[ .. ]]> permet de mettre du texte brut à l'intérieur sans avoir à le modifier avec des é par exemple
Merci webmasterlamogere Je vais abuser encore un peu (au point ou j'en suis...) comment faire pour que ce texte soit affiché? Est-ce une question d'encodage des caractères? Car quand je parse le flux, il n'y a que les descriptions sans CDATA qui s'affiche?
Merci d'avance
-

webmasterlamogere - WRInaute passionné

- Messages: 1874
- Inscription: 17 Déc 2006
utilise un parser xml : il récupère que le texte et s'occupe de mettre le texte au bon format.
http://fr.php.net/xml
http://fr.php.net/xml
- cuirwebmaster
- Nouveau WRInaute

- Messages: 29
- Inscription: 4 Mai 2007
webmasterlamogere a écrit:utilise un parser xml : il récupère que le texte et s'occupe de mettre le texte au bon format.
http://fr.php.net/xml
Ok merci!
11 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Un (RSS) pour tous (les blogs officiels de Google)
- Google Enterprise a son blog
- Intégrer facilement un flux RSS externe
- Annuaire WRI : intégration des flux XML des inscrits
- Le blog de Google Analytics
- Le blog officiel de Google Research
- Utiliser Actifpub pour l'intégration d'un flux RSS externe sur son site
- Le blog officiel de Google au Japon
Consultez la description détaillée des produits ou services de Google suivants : API Google Checkout
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

