如何获取XML子节点的值?

时间:2014-05-12 02:40:05

标签: c# xml .net-4.5

我有一个包含以下形式的数千个航路点的文件:

<wpt lat="45.1058149" lon="-88.316769">
   <ele>256</ele>
   <type>Tower</type>
   <extensions>
      <label xmlns="http://www.topografix.com/GPX/gpx_overlay/0/3">
         <label_text>Bagley Lookout Tower</label_text>
      </label>
   </extensions>
</wpt>

从每个条目中获取纬度,经度,海拔和类型都没有问题。但我无法弄清楚如何获取label_text值。

以下是用于获取高程的代码,修剪为最小代码。

var waypoints = from waypoint in gpxDoc.Descendants(gpx + "wpt")
  select new
  {
     Elevation = waypoint.Element(gpx + "ele") != null ? waypoint.Element(gpx + "ele").Value : null,
     Type = waypoint.Element(gpx + "type") != null ? waypoint.Element(gpx + "type").Value : null,
  };

我如何获得label_text的值?

谢谢!

更新:这是我最近尝试实现此功能的尝试。不幸的是,我仍然没有取得任何进展,以获得我正在寻求的真正价值。我得到了LabelText = null

LabelText = waypoint.Element(gpx + "extensions").Element(gpx + "label") != null ? waypoint.Element(gpx + "extensions").Element(gpx + "label").Element(gpx + "label_text").Value : null,

1 个答案:

答案 0 :(得分:0)

使用:

Label = (string)waypoint.Element(gpx + "extensions").Element(topo + "label")
    .Element(topo + "label_text")

,其中

XNamespace topo = "http://www.topografix.com/GPX/gpx_overlay/0/3";