Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides. FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans. Proposez vos news : si vous avez un evenement à annoncer le chat : venez discuter de php. |
||
Bonjour à tous
je débute avec simplexml en essayant de rassembler des bribes de souvenir en PHP! Voici donc un fichier xml que je dois requeter:
<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" xmlns:mappoint="http://virtualearth.msn.com/apis/annotate#">
<channel>
<title>Zones etudes KSpot</title>
<link></link>
<description>Localisation des zones d'etudes disponible dans KSPOT adi pour Kyris mai 2007</description>
<mappointIntlCode>cht</mappointIntlCode>
<item>
<title>590510000</title>
<link></link>
<description>0;Croix:3;Marc en Baroeul:2,5;Orvault;</description>
<geo:lat> 50.5388373881578</geo:lat>
<geo:long> 2.80992893502116</geo:long>
</item>
<item>
<title>596230000</title>
<link></link>
<description>0;Croix:15,5;Marc en Baroeul:0;Orvault;</description>
<geo:lat> 50.0355881731957</geo:lat>
<geo:long> 3.14659385941923</geo:long>
</item>
<item>
<title>590520000</title>
<link></link>
<description>0;Croix:4;Marc en Baroeul:3,5;Orvault;</description>
<geo:lat> 50.5174185242504</geo:lat>
<geo:long> 2.89355007000268</geo:long>
</item>
<item>
<title>593200000</title>
<link></link>
<description>0;Croix:0;Marc en Baroeul:2,2;Orvault;</description>
<geo:lat> 50.5635185725987</geo:lat>
<geo:long> 2.83156916499138</geo:long>
</item>
</channel>
</rss>c'est un GEORSS du w3c et comme vous le remarquerez une des balise est <geo:lat>
Or, cette balise avec ces deux points : en plein milieu me cause soucis car le code suivant ne parvient pas à récupérer les valeurs de latitude
<html><head/><body>
<?php
$rss = simplexml_load_file('iris.xml');
foreach ($rss->channel as $channel) {
foreach ($channel->item as $item) {
foreach ($item->description as $description) {
print "longitude : {$item->geo:lat} <br />\n";
}
}
}
?>
</body></html>Je ne peux évidemment pas changer le nom de la balise.. si quelqu'un a une soluce pour mettre la valeur de ces balises dans une variable, je lui serai très reconnaissant!!
Hors ligne
il faut déclarer la fonction geo:lat avant geo-long et essayer de ne pas tenter d'écrire en php car il est parti.
Hors ligne
heu , je ne comprends pas très bien .. tu pourrais me poster un exemple ?
Dernière modification par adi (27-10-2007 05:19:01)
Hors ligne
Ekolo a écrit:
il faut déclarer la fonction geo:lat avant geo-long et essayer de ne pas tenter d'écrire en php car il est parti.
c'est bien beau Ekolo, mais ce message ne veut absoluement rien dire
Il n'y a pas de "fonction a déclarer" ni avant ni apres geo-long quand à PHP qui est parti .. je passe ..
Bon j'ai trouvé la soluce en passant par XPATH
Mais l'astuce et d'utiliser avant une déclaration de namespace pour bien préciser que "geo" est un préfixe
$rss->registerXPathNamespace('geo', 'http://www.w3.org/2003/01/geo/wgs84_pos#');Bref le code entier tient dans un mouchoir de poche
$rss = simplexml_load_file('iris.xml');
$rss->registerXPathNamespace('geo', 'http://www.w3.org/2003/01/geo/wgs84_pos#');
$result = $rss->xpath('//geo:lat');
foreach ($result as $title) {
print "latitude : " . $title . "<br />\n";
}et php n'est pas parti!!!!
Hors ligne