解析XML命名空间节点

我对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。我无法正确匹配扩展下的命名空间节点的标记。


关于我要去哪儿有什么建议吗?


红颜莎娜
浏览 254回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go