Javascript getElementsByTagName没有返回结果

时间:2017-05-25 20:35:54

标签: javascript xml dom getelementsbytagname

我有以下XML(它实际上是一个gpx文件)

<?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 个答案:

答案 0 :(得分:1)

gpxdata:distance不是代码名称。

gpxdata是一个命名空间。 distance是标记名称。

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