Pages: 1
- Sujet précédent - [WMS - WFS] Récupération des info XML issus d'un getcapabilities - Sujet suivant
#1 Wed 03 November 2010 09:38
- thomas.milon
- Participant occasionnel
- Date d'inscription: 9 Mar 2008
- Messages: 13
[WMS - WFS] Récupération des info XML issus d'un getcapabilities
Bonjour à tous,
Je voulais savoir s'il existe un script permettant de récupérer les noeud XML issus d'un getcapabilities pour une couche wms ou wfs?
L'objectif est de pouvoir récupérer le nombre et le nom des couches disponibles.
ex : http://ws.carmencarto.fr/WMS/105/ONF_Fo … sion=1.0.0
J'utilise du php mapscript et ne suis pas un expert en php (ni en Mapserver ^^)
J'ai testé avec simpleXML et DOMdocument, mais n'ai pas réussi grand chose. Tout les exemples que j'ai trouvé concernant ces "outils" sont sur des fichiers xml et non sur des flux issus d'un webservice.
Une autre piste, cURL. Quelqu'un l'a-t-il testé?
Merci d'avance
Thomas
Hors ligne
#2 Wed 03 November 2010 09:59
Re: [WMS - WFS] Récupération des info XML issus d'un getcapabilities
Bonjour,
Les GetCapabilities sont des fichiers XML donc tu dois pouvoir passer par simpleXML et DOMdocument. Il me semble l'avoir fait dans une autre vie avec simpleXML en PHP.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#3 Wed 03 November 2010 10:47
- thomas.milon
- Participant occasionnel
- Date d'inscription: 9 Mar 2008
- Messages: 13
Re: [WMS - WFS] Récupération des info XML issus d'un getcapabilities
Ok, je vais tester de nouveau.
Si vous avez d'autres pistes, n'hésitez pas ^^!
Merci
Hors ligne
#4 Fri 05 November 2010 09:42
- thomas.milon
- Participant occasionnel
- Date d'inscription: 9 Mar 2008
- Messages: 13
Re: [WMS - WFS] Récupération des info XML issus d'un getcapabilities
Effectivement, avec simplexml, j'ai commencé à avoir quelques résultats.
un début de script (fait pour le rss normalement)
Code:
try{ if(!@$fluxrss=simplexml_load_file('http://cartorisque.prim.net/wms/france?request=getcapabilities&service=wms&version=1.0.0')){ throw new Exception('Flux introuvable'); } //code à venir if(empty($fluxrss->Service->Name)) throw new Exception('Flux invalide'); echo '<h3>'.$fluxrss->Service->Name.'</h3> <p>'.$fluxrss->Service->Title.'</p>'; $i = 0; $nb_affichage = 10; echo '<ul>'; foreach($fluxrss->Capability->Layer->Layer->Layer->Name as $item){ echo '<li>'.(string)$item.'</li>'; if(++$i>=$nb_affichage) break; } echo '</ul>'; } catch(Exception $e){ echo $e->getMessage(); }
ça me donne la première couche pour l'instant.
Affaire à suivre
Hors ligne
#5 Fri 05 November 2010 11:41
- tiolebucheron
- Participant actif
- Lieu: Rouen
- Date d'inscription: 26 Mar 2006
- Messages: 147
Re: [WMS - WFS] Récupération des info XML issus d'un getcapabilities
Bonjour
Je te propose ce que j'ai fait
Cette méthode permet de récupérer dans le xml ($content) le contenu des sous noeuds. C'est à adapter.
bon courage
tio
Code:
function get_info_xml($content,$typename){ $res = array(); $info = array(); $dom = new DOMDocument( "1.0", "ISO-8859-15" ); $dom->preserveWhiteSpace = FALSE; $dom->loadXML($content); // Suppression du nom de la couche, de la forme géographique foreach ($dom->getElementsByTagNameNS('http://mapserver.gis.umn.edu/mapserver', '*') as $element) { if (($element->nodeType == XML_ELEMENT_NODE) && ( $element->localName != $typename ) ){ if ($element->localName=="msGeometry"){ $res[$element->localName] =$dom->saveXML($element); } else { $res[$element->localName] = $element->nodeValue; } } if (( $element->localName == $typename ) && (!empty($res))) { array_push($info,$res); } } if (!empty($res)) {array_push($info,$res);} return $info; }
Hors ligne
Pages: 1
- Sujet précédent - [WMS - WFS] Récupération des info XML issus d'un getcapabilities - Sujet suivant