2017-05-25 50 views
0

我有下面的XML(它實際上是一個GPX文件)的JavaScript的getElementsByTagName沒有返回結果

<?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> 

我通過加載:

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

這工作:

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

但這不是

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

儘管我在chromewebtools中看到它的標籤名稱是gpxdata:distance

Console Output

Standart說:

的的getElementsByTagName(qualifiedName中)方法被調用時,必須 返回與限定名的qualifiedName元素 上下文對象的名單。

我錯過了什麼?

回答

1

gpxdata:distance不是標籤名稱。

gpxdata是一個命名空間。 distance是標籤名稱。

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

非常感謝這麼多人。我是DOM解析的新手,因爲chrome開發工具列出了tagName,如上圖所示,我不明白爲什麼不選擇它。然而,由於這個原因,你不覺得把開發工具中的名稱空間和tagName作爲標籤名稱有點困惑嗎? –