IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

xml et xpath


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 423
    Points : 133
    Points
    133
    Par défaut xml et xpath
    Bonjour,

    J'essaie de lire un fichier xml en javascript en utilisant xpath :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    var w = $.ajax({
    			type: "GET",
    			url: url+"?service=WMS&version=1.3.0&request=GetCapabilities",
    			dataType: "xml",
    			success: function(xml) {
    							var txt = '';
    							path = "/WMS_Capabilities/Service/Name";
     
    							if (xml.evaluate) {
    								var nodes = xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);
     
    								var result = nodes.iterateNext();
    								console.log(result);
    								while (result) {
    									txt += result.childNodes[0].nodeValue + "<br>";
    									result = nodes.iterateNext();
    								} 
    							}
    							console.log(txt);
    			},
    			error: function(err){alert("Error: Erreur dans la lecture du getCapabilities"); console.log(err)}
    		});
    Mais ça ne me renvoie rien, la variable result est vide.

    Pourtant, dans mon xml, le path existe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <WMS_Capabilities xmlns="http://www.opengis.net/wms" xmlns:inspire_vs="http://inspire.ec.europa.eu/schemas/inspire_vs/1.0" xmlns:sld="http://www.opengis.net/sld" xmlns:inspire_common="http://inspire.ec.europa.eu/schemas/common/1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.3.0" xsi:schemaLocation="http://www.opengis.net/wms http://schemas.opengis.net/wms/1.3.0/capabilities_1_3_0.xsd  http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/sld_capabilities.xsd http://inspire.ec.europa.eu/schemas/inspire_vs/1.0 http://inspire.ec.europa.eu/schemas/inspire_vs/1.0/inspire_vs.xsd http://inspire.ec.europa.eu/schemas/common/1.0 http://inspire.ec.europa.eu/schemas/common/1.0/common.xsd">
       <Service>
          <Name>WMS</Name>
          <Title>Service de visualisation cartographique (WMS) des observations Météorologique en surface sur la France metropolitaine</Title>
          <Abstract>Le service permet de consulter sous forme cartographique les données d'observations issues des messages en code synoptique international d’observation en surface  (SYNOP) circulant sur le système mondial de télécommunication (SMT) de l’Organisation météorologique mondiale (OMM). Paramètres atmosphériques mesurés (température, humidité, direction et force du vent, pression atmosphérique, hauteur de précipitations) ou observés (temps sensible, description des nuages, visibilité) depuis la surface terrestre.  Selon instrumentation et spécificités locales, d'autres paramètres peuvent être disponibles (hauteur de neige, état du sol, etc.)
     
    Metropole - disponibles depuis les 5 derniers jours - fréquence 3h - Format ASCII</Abstract>
    alors qu'est ce qui cloche?

    Merci,
    Nico

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    tu as oublié le namespace : xmlns="http://www.opengis.net/wms" .

    Là ton XPath demande des éléments sans namespace. Alors que tes éléments sont dans le namespace http://www.opengis.net/wms . Il faut demander des éléments dans le namespace http://www.opengis.net/wms .

    Pour ça, première chose, choisir à l'envie un préfixe pour ce namespace. Disons wms: . Ce qui change ton expression XPath en:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /wms:WMS_Capabilities/wms:Service/wms:Name
    Ensuite, il faut indiquer à evaluate() à quel namespace correspond le préfixe wms: . Pour cela, définir une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function wmsResolver(prefix) {
      if(prefix == 'wms') {
        return 'http://www.opengis.net/wms'
      }
    }
    (enfin en réalité, puisque tu n'utilises qu'un seul namespace tu as pas besoin de t'embêter et tu peux faire : )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function() { return 'http://www.opengis.net/wms' }
    Puis tu utilises cette fonction pour que evaluate() connaisse ce namespace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xml.evaluate(path, xml, wmsResolver, XPathResult.ANY_TYPE, null)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [Javascript][XML]
    Par kirk80 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/07/2009, 12h08
  2. application web local, html, javascript, xml tourant sur PDA
    Par goupilou dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 06/03/2006, 22h40
  3. [XML/XSL/XPATH]Requete XPATH pour transformation
    Par Le-Cortex dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 04/01/2006, 17h32
  4. [XML] Requête Xpath
    Par Raylemon dans le forum Langage
    Réponses: 1
    Dernier message: 02/07/2005, 15h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo