我刚开始在c#中使用linq查询,而且我很难获得所需的所有数据。
基本上我使用google earth kml文件作为我的xml文件。
结构看起来像这样。
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
<Placemark>
<name>XXX</name>
<description>XXX</description>
<styleUrl>XXX</styleUrl>
<Point>
<coordinates>XXX</coordinates>
</Point>
</Placemark>
</Document>
</kml>
使用我的代码,我可以获得第一级元素(名称,描述,样式),但无法获得我的语法,以获得Point中的坐标元素。谁能指出我正确的方向?我正在努力的线是Coord = p.Element(ns +“Point”)。元素(ns +“坐标”)。值,这应该是什么?
XNamespace ns = "http://earth.google.com/kml/2.2";
var placemarks = xdoc.Descendants(ns + "Placemark")
.Select(p => new
{
Name = p.Element(ns + "name").Value,
Desc = p.Element(ns + "description").Value,
Coord = p.Element(ns + "Point")
.Element(ns + "coordinates").Value
}).ToList();
答案 0 :(得分:1)
var placemarks = xdoc.Descendants(ns + "Placemark")
.Select(p => new
{
Name = p.Element(ns + "name").Value,
Desc = p.Element(ns + "description").Value,
Coord = p.Descendants(ns + "coordinates")
.First().Value
})
.ToList();