2017-05-25 2 views
0

je le code XML suivant (il est en fait un fichier GPX)Javascript getElementsByTagName pas de retour des résultats

<?xml version="1.0" encoding="utf-8" standalone="no"?> 
<gpx version="1.1" creator="Movescount - http://www.movescount.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd http://www.cluetrust.com/XML/GPXDATA/1/0 http://www.cluetrust.com/Schemas/gpxdata10.xsd http://www.garmin.com/xmlschemas/TrackPointExtension/v1 http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd" xmlns:gpxdata="http://www.cluetrust.com/XML/GPXDATA/1/0" xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1" xmlns="http://www.topografix.com/GPX/1/1"> 
    <trk> 
    <name>Move</name> 
    <trkseg> 
     <trkpt lat="52.3535" lon="4.848642"> 
     <ele>12</ele> 
     <time>2017-05-05T06:25:41.000Z</time> 
     <extensions> 
      <gpxtpx:TrackPointExtension xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1"> 
      <gpxtpx:hr>105</gpxtpx:hr> 
      </gpxtpx:TrackPointExtension> 
      <gpxdata:cadence>81</gpxdata:cadence> 
      <gpxdata:temp>22.7000007629395</gpxdata:temp> 
      <gpxdata:distance>-19.1377588523053</gpxdata:distance> 
      <gpxdata:altitude>12</gpxdata:altitude> 
      <gpxdata:seaLevelPressure>1024</gpxdata:seaLevelPressure> 
      <gpxdata:speed>3.20000004768372</gpxdata:speed> 
      <gpxdata:verticalSpeed>0</gpxdata:verticalSpeed> 
     </extensions> 
     </trkpt> 
    </trkseg> 
    </trk> 
</gpx> 

-je charger via:

var parser = new DOMParser(); 
xmlDocument = parser.parseFromString(xml, 'application/xml'); 

Cela fonctionne:

xml.getElementsByTagName('gpx') 
>[gpx] 

Mais cela ne

xml.getElementsByTagName('gpxdata:distance') 
>[] 

Bien que je vois que son nom de la balise est gpxdata:distance dans les chromewebtools.

Console Output

Le Standart dit:

La méthode getElementsByTagName (qualifiedName), lorsqu'il est invoqué, doit retourner la liste des éléments avec qualifiedName nom qualifié pour objet de contexte.

Qu'est-ce qui me manque?

Répondre

1

gpxdata:distance n'est pas un nom de balise.

gpxdata est un espace de noms. distance est un nom de tag.

xml.getElementsByTagNameNS(
    "http://www.garmin.com/xmlschemas/TrackPointExtension/v1", 
    "distance" 
); 
+0

Merci beaucoup d'homme. Je suis nouveau à l'analyse syntaxique DOM et parce que les outils de dev chrome liste la tagName comme on le voit dans la photo ci-dessus, je ne comprenais pas pourquoi il sélectionnez pas. Cependant, pour cette raison, ne pensez-vous pas qu'il est un peu déroutant d'avoir l'espace de noms et le tagName en tant que nom de tag dans les outils de développement? –