| |
|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
cuirwebmaster Nouveau WRInaute
Inscrit le: 04 Mai 2007 Messages: 28
|
Posté le : Mer Mai 14, 2008 22:24 Sujet du message: 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! )
| Code: |
<?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: |
<?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 occasionnel

Inscrit le: 16 Fév 2008 Messages: 121
|
Posté le : Jeu Mai 15, 2008 1:57 Sujet du message: Requête sur un flux xml? |
|
|
Lol, j'ai reconnu l'origine, effectivement.
Aucun problème pour ce que tu souhaites faire, une simple condition suffit. |
|
| |
|
 |
cuirwebmaster Nouveau WRInaute
Inscrit le: 04 Mai 2007 Messages: 28
|
Posté le : Jeu Mai 15, 2008 3:09 Sujet du message: Requête sur un flux xml? |
|
|
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 !!! |
|
| |
|
 |
webmasterlamogere WRInaute accro

Inscrit le: 17 Déc 2006 Messages: 1604 Localisation: urlrewriting.fr
|
Posté le : Jeu Mai 15, 2008 7:35 Sujet du message: Requête sur un flux xml? |
|
|
tu peut ajouter le test autour des "echo" :
| Code: |
<?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

Inscrit le: 27 Déc 2004 Messages: 2262 Localisation: La roche s/ yon
|
Posté le : Jeu Mai 15, 2008 10:13 Sujet du message: Requête sur un flux xml? |
|
|
| il y a des classe pour manipuler le xml qui existent et open source |
|
| |
|
 |
Bacteries WRInaute accro

Inscrit le: 27 Mai 2004 Messages: 1034 Localisation: France - Nantes
|
Posté le : Jeu Mai 15, 2008 10:29 Sujet du message: Requête sur un flux xml? |
|
|
| Oui voilà, y'a des classes pour manipuler du XML, via du xpath (langage de requête pour le XML) ou autre. |
|
| |
|
 |
cuirwebmaster Nouveau WRInaute
Inscrit le: 04 Mai 2007 Messages: 28
|
Posté le : Jeu Mai 15, 2008 10:45 Sujet du message: Requête sur un flux xml? |
|
|
| 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 Néanmois, je remercie webmasterlamogere pour la solution qu'il m'a donnée et qui semble fonctionner.
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 accro

Inscrit le: 17 Déc 2006 Messages: 1604 Localisation: urlrewriting.fr
|
Posté le : Jeu Mai 15, 2008 11:19 Sujet du message: Requête sur un flux xml? |
|
|
| <![CDATA[ .. ]]> permet de mettre du texte brut à l'intérieur sans avoir à le modifier avec des é par exemple |
|
| |
|
 |
cuirwebmaster Nouveau WRInaute
Inscrit le: 04 Mai 2007 Messages: 28
|
Posté le : Jeu Mai 15, 2008 11:55 Sujet du message: Requête sur un flux xml? |
|
|
| 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 accro

Inscrit le: 17 Déc 2006 Messages: 1604 Localisation: urlrewriting.fr
|
Posté le : Jeu Mai 15, 2008 12:03 Sujet du message: Requête sur un flux xml? |
|
|
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 |
|
| |
|
 |
cuirwebmaster Nouveau WRInaute
Inscrit le: 04 Mai 2007 Messages: 28
|
Posté le : Jeu Mai 15, 2008 12:08 Sujet du message: Requête sur un flux xml? |
|
|
| 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! |
|
| |
|
 |
| |
|
|
|
|
Autres sujets de discussion :
|
|