1

Garmin GPS デバイス内で作成された GPX ファイルを読み込もうとしています。すべてのデータを引き出そうとする次のコードがありますが、ノードでハングアップし、子です。=>

これがコードです

//returns http://www.topografix.com/GPX/1/1
XNamespace gpx = GetGpxNameSpace();
XDocument gpxDoc = GetGpxDoc();
XNamespace gpxtpx = XNamespace.Get("gpxtpx");
var waypoints = from waypoint in gpxDoc.Descendants(gpx + "trkpt")
                select new
                {
                    Latitude = waypoint.Attribute("lat").Value,
                    Longitude = waypoint.Attribute("lon").Value,
                    Elevation = waypoint.Element(gpx + "ele") != null ?
                        waypoint.Element(gpx + "ele").Value : null,
                    Dt = waypoint.Element(gpx + "time") != null ?
                        waypoint.Element(gpx + "time").Value : null,
                    hr = waypoint.Element(gpx+ "extensions").Element(gpxtpx +"TrackPointExtension").Element(gpxtpx +"hr").Value
                };

StringBuilder sb = new StringBuilder();
foreach (var wpt in waypoints)
{
    // This is where we'd instantiate data
    // containers for the information retrieved.
    sb.Append(
        string.Format("Name:{0} Latitude:{1} Longitude:{2} Elevation:{3} Date:{4}\n",
        "x", wpt.Latitude, wpt.Longitude,
        wpt.Elevation, wpt.Dt));
}

return sb.ToString();

そしてxmlノード

<trkseg>
   <trkpt lon="-111.5252978168428" lat="35.07395471446216">
      <ele>2084.800048828125</ele>
      <time>2012-07-15T14:47:16.000Z</time>
      <extensions>
         <gpxtpx:TrackPointExtension>
            <gpxtpx:hr>155</gpxtpx:hr>
         </gpxtpx:TrackPointExtension>
      </extensions>
   </trkpt>
...
</trkseg>

他のすべてのノードには問題なくアクセスできますが、hr ノードにアクセスしようとするとエラーが発生します。

どんな助けでも大歓迎です。

4

2 に答える 2

1

変更してみる

XNamespace gpxtpx = XNamespace.Get("gpxtpx");

XNamespace gpxtpx = XNamespace.Get("http://www.garmin.com/xmlschemas/TrackPointExtension/v1");
于 2013-06-13T18:00:12.597 に答える