我对 Go 比较陌生,但在一项基本任务上苦苦挣扎。我正在使用“encoding/xml”包解析 GPX 文件,并具有以下示例 xml 数据;
<gpx creator="StravaGPX" version="1.1" xmlns="http://www.topografix.com/GPX/1/1"
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.garmin.com/xmlschemas/GpxExtensions/v3 http://www.garmin.com/xmlschemas/GpxExtensionsv3.xsd http://www.garmin.com/xmlschemas/TrackPointExtension/v1 http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www.garmin.com/xmlschemas/GpxExtensionsv3.xsd http://www.garmin.com/xmlschemas/TrackPointExtension/v1 http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd" xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1" xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3">
<metadata>
<time>2013-02-16T10:11:25Z</time>
</metadata>
<trk>
<name>Demo Data</name>
<trkseg>
<trkpt lat="51.6395658" lon="-3.3623858">
<ele>111.6</ele>
<time>2013-02-16T10:11:25Z</time>
<extensions>
<gpxtpx:TrackPointExtension>
<gpxtpx:atemp>8</gpxtpx:atemp>
<gpxtpx:hr>136</gpxtpx:hr>
<gpxtpx:cad>0</gpxtpx:cad>
</gpxtpx:TrackPointExtension>
</extensions>
</trkpt>
到目前为止,我能够获得以下类型的最基本信息;
type Gpx struct {
Creator string `xml:"creator,attr"`
Time string `xml:"metadata>time"`
Title string `xml:"trk>name"`
TrackPoints []TrackPoint `xml:"trk>trkseg>trkpt"`
}
type TrackPoint struct {
Lat float64 `xml:"lat,attr"`
Lon float64 `xml:"lon,attr"`
Elevation float32 `xml:"ele"`
Time string `xml:"time"`
Temperature int `xml:"extensions>gpxtpx>atemp"`
}
我无法解析的地方是 TrackPoint.Temperature。我无法正确匹配扩展名下的命名空间节点。
关于我哪里出错的任何建议?