2012-10-13 70 views
0

我剛剛開始在c#中使用linq查詢,並且我努力獲取所需的所有數據。在C#中使用LINQ和XML獲取子元素

基本上我使用谷歌地球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> 

我的代碼,因爲它是我能得到元素的第一級,(名稱,描述,styleurl),但不能以點帶面內獲取座標元素我的語法正確。任何人都可以將我指向正確的方向嗎?我掙扎的線是Coord = p.Element(ns +「Point」)。Element(ns +「coordinates」)。Value,這應該是什麼?

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(); 

回答

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(); 
+0

謝謝!現在工作很好。 – norbert