Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > SimpleXML
SimpleXML Forum d'entraide pour l'extension SimpleXML, qui permet de manipuler des documents XML en PHP (approche DOM).
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/08/2011, 19h26   #1
Invité de passage
 
Homme GeckO
Webmaster
Inscription : juillet 2011
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme GeckO
Localisation : Suisse

Informations professionnelles :
Activité : Webmaster
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : juillet 2011
Messages : 3
Points : 1
Points : 1
Par défaut Prob XML avec Geonames

Bonjour,

Je suis en train de travailler avec geonames pour récupérer des noms de ville avec leurs noms alternatifs dans d'autres langues.

Voici le XML que ça me donne :

Code :
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
 
<geonames style="FULL"><totalResultsCount>273</totalResultsCount>
<geoname>
 <toponymName>Genève</toponymName>
 <name>Genève</name>
 <lat>46.20222</lat>
 <lng>6.14569</lng>
 <geonameId>2660646</geonameId>
 <countryCode>CH</countryCode>
 <countryName>Suisse</countryName>
 <fcl>P</fcl>
 <fcode>PPLA</fcode>
 <fclName>city, village,...</fclName>
 <fcodeName>seat of a first-order administrative division</fcodeName>
 <population>183981</population>
 <alternateNames>Cenevre,GVA,Genava,Genebe,Genebra,Geneue,Geneva,Geneve,Genevi,Genevo,Genevra,Genewa,Genf,Genève,Ginebra,Ginevra,Jenewa,Xenebra - Geneve,Xenebra - Genève,Zeneva,Zhehneva,Zheneva,Znev,janiva,jeneba,jnyf,jnywa,junevu,ri nei wa,z'nbh,zheneva,&#284;enevo,Ženeva,Žen&#275;va,&#915;&#949;&#957;&#941;&#946;&#951;,&#915;&#949;&#957;&#949;&#965;&#951;,&#915;&#949;&#957;&#949;&#973;&#951;,&#1046;&#1077;&#1085;&#1077;&#1074;&#1072;,&#1046;&#1101;&#1085;&#1077;&#1074;&#1072;,&#1338;&#1398;&#1415;,&#1494;'&#1504;&#1489;&#1492;,&#1580;&#1606;&#1610;&#1601;,&#1580;&#1606;&#1740;&#1608;&#1575;,&#1580;&#1749;&#1606;&#1739;&#1749;,&#2332;&#2344;&#2368;&#2357;&#2366;,&#4319;&#4308;&#4316;&#4308;&#4309;&#4304;,&#12472;&#12517;&#12493;&#12540;&#12532;,&#26085;&#20869;&#29926;,&#51228;&#45348;&#48148; </alternateNames>
 <elevation/>
 <continentCode>EU</continentCode>
 <adminCode1>GE</adminCode1>
 <adminName1>Genève</adminName1>
 <adminCode2>2500</adminCode2>
 <adminName2>Genève</adminName2>
 <adminCode3>6621</adminCode3>
 <adminName3>Genève</adminName3>
 <alternateName lang="af">Genève</alternateName>
 <alternateName lang="ar">&#1580;&#1606;&#1610;&#1601;</alternateName>
 <alternateName lang="be">&#1046;&#1101;&#1085;&#1077;&#1074;&#1072;</alternateName>
 <alternateName lang="bg">&#1046;&#1077;&#1085;&#1077;&#1074;&#1072;</alternateName>
 <alternateName lang="bs">Ženeva</alternateName>
 <alternateName lang="ca">Ginebra</alternateName>
 <alternateName lang="cs">Ženeva</alternateName>
 <alternateName lang="da">Geneve</alternateName>
 <alternateName lang="de">Genf</alternateName>
 <alternateName lang="el">&#915;&#949;&#957;&#949;&#965;&#951;</alternateName>
 <alternateName lang="en">Geneva</alternateName>
 <alternateName lang="eo">&#284;enevo</alternateName>
 <alternateName lang="es">Ginebra</alternateName>
 <alternateName lang="et">Genf</alternateName>
 <alternateName lang="eu">Ginebra</alternateName>
 <alternateName lang="fi">Geneve</alternateName>
 <alternateName lang="fr">Genève</alternateName>
 <alternateName lang="frp">Geneva</alternateName>
 <alternateName lang="gl">Xenebra - Genève</alternateName>
 <alternateName lang="he">&#1494;'&#1504;&#1489;&#1492;</alternateName>
 <alternateName lang="hi">&#2332;&#2344;&#2368;&#2357;&#2366;</alternateName>
 <alternateName lang="hr">Ženeva</alternateName>
 <alternateName lang="hu">Genf</alternateName>
 <alternateName lang="hy">&#1338;&#1398;&#1415;</alternateName>
 <alternateName lang="iata">GVA</alternateName>
 <alternateName lang="id">Jenewa</alternateName>
 <alternateName lang="io">Genève</alternateName>
 <alternateName lang="is">Genf</alternateName>
 <alternateName lang="it">Ginevra</alternateName>
 <alternateName lang="ja">&#12472;&#12517;&#12493;&#12540;&#12532;</alternateName>
 <alternateName lang="ka">&#4319;&#4308;&#4316;&#4308;&#4309;&#4304;</alternateName>
 <alternateName lang="ko">&#51228;&#45348;&#48148;</alternateName>
 <alternateName lang="la">Genava</alternateName>
 <alternateName lang="link">http://en.wikipedia.org/wiki/Geneva</alternateName>
 <alternateName lang="lt">Ženeva</alternateName>
 <alternateName lang="lv">Žen&#275;va</alternateName>
 <alternateName lang="nds">Genf</alternateName>
 <alternateName lang="nl">Genève</alternateName>
 <alternateName lang="nn">Genève</alternateName>
 <alternateName lang="no">Genève</alternateName>
 <alternateName lang="pl">Genewa</alternateName>
 <alternateName lang="pt">Genebra</alternateName>
 <alternateName lang="qu">Genève</alternateName>
 <alternateName lang="rm">Genevra</alternateName>
 <alternateName lang="ro">Geneva</alternateName>
 <alternateName lang="ru">&#1046;&#1077;&#1085;&#1077;&#1074;&#1072;</alternateName>
 <alternateName lang="scn">Ginevra</alternateName>
 <alternateName lang="sh">Ženeva</alternateName>
 <alternateName lang="sk">Ženeva</alternateName>
 <alternateName lang="sr">&#1046;&#1077;&#1085;&#1077;&#1074;&#1072;</alternateName>
 <alternateName lang="sv">Genève</alternateName>
 <alternateName lang="tr">Cenevre</alternateName>
 <alternateName lang="ug">&#1580;&#1749;&#1606;&#1739;&#1749;</alternateName>
 <alternateName lang="ur">&#1580;&#1606;&#1740;&#1608;&#1575;</alternateName>
 <alternateName lang="vi">Geneva</alternateName>
 <alternateName lang="zh">&#26085;&#20869;&#29926;</alternateName>
 <timezone dstOffset="2.0" gmtOffset="1.0">Europe/Zurich</timezone><score>98.55810546875</score>
</geoname>
</geonames>
Il y a même plusieurs éléments "geoname" qui arrivent (la au dessus j'en ai mis qu'un), et je peux presque tous les récupérer avec ce code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
$xmlurl="http://api.geonames.org/search?q=".$laville."&maxRows=2&lang=fr&username=geckosystem&style=full";
$xml=simplexml_load_file($xmlurl);
 
foreach ($xml->geoname as $geoname)
{
$laville_nom=$geoname->name;
$laville_lat=$geoname->lat;
$laville_lon=$geoname->lng;
$laville_pop=$geoname->population;
$laville_alt=$geoname->elevation;
$laville_fr=$geoname->alternateName->lang['fr'];
$laville_en=$geoname->alternateName->lang['en'];
$laville_de=$geoname->alternateName->lang['de'];
$laville_it=$geoname->alternateName->lang['it'];
$laville_es=$geoname->alternateName->lang['es'];
print($laville_nom." (FR:".$laville_fr."-EN:".$laville_en."-DE:".$laville_de."-IT:".$laville_it."-ES:".$laville_es."<br>");
}
Eh bien tout ce qui doit venir des alternateName reste vide !
Je veux précisément récupérer les valeurs de 5 langues : fr, en, de, es & it.

ça fait un moment que je tourne dans ce forum, et je trouve pas la réponse !
Merci d'avance à qui m'aideras !
geckosystem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2011, 19h47   #2
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 454
Points : 3 454
Citation:
Eh bien tout ce qui doit venir des alternateName reste vide !
Je veux précisément récupérer les valeurs de 5 langues : fr, en, de, es & it.
Normal, ceci :

Code :
$laville_fr=$geoname->alternateName->lang['fr'];
... permet d'accéder à la valeur d'un attribut de : <alternateName><lang fr="???">

Faudrait faire dans ta boucle :

Code :
1
2
3
4
5
6
$langs = array('fr', 'en', 'de', 'es', 'it') ; // Recherches
foreach ( $geoname->alternateName as $alternateName ) {
    if ( in_array($alternateName['lang'], $langs) ) {
        ${'laville_' . $alternateName['lang']} = (string)$alternateName ;
    }
}
... ou utiliser un XPath pour sélectionner les alternateName qui t'intéressent.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2011, 21h10   #3
Invité de passage
 
Homme GeckO
Webmaster
Inscription : juillet 2011
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme GeckO
Localisation : Suisse

Informations professionnelles :
Activité : Webmaster
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : juillet 2011
Messages : 3
Points : 1
Points : 1
Par défaut Merci !

Merci pour ta réponse ! je tente ...
geckosystem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2011, 22h17   #4
Invité de passage
 
Homme GeckO
Webmaster
Inscription : juillet 2011
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme GeckO
Localisation : Suisse

Informations professionnelles :
Activité : Webmaster
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : juillet 2011
Messages : 3
Points : 1
Points : 1
Par défaut re Merci !

ça fonctionne ! Merci beaucoup et bonne soirée !
geckosystem est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h31.


 
 
 
 
Partenaires

Hébergement Web