2009-09-08 51 views
2

這是一個新手的問​​題,但我似乎無法找到執行以下操作:的LINQ to XML中獲得價值

XML是這樣的 -

<sets><set><title>hello1</title><images><image>1667</image></images></set></sets> 

    foreach (XElement setNode in collectionXML.DescendantNodes()) 
    { 
     myString = setNode.Descendants("title").First().... 
    } 

從第(),我怎麼弄內標題節點的值? (在這種情況下,這將是「hello1」)的元素會產生「hello1」

調用toString(),這顯然是不太什麼,我想

回答

4
myString = setNode.Descendants("title").First().Value; 

(不過,我很含糊不清,什麼初始DescendantNodes所做的事。我會傾向於多一點特定哪些節點我選擇)

+0

我怎麼錯過了這個?謝謝 – qui 2009-09-08 11:59:16

+0

您也可以將XElement轉換爲字符串,而不是訪問其Value屬性。這可以幫助在XElement引用可能爲空的情況下避免空引用錯誤。例如,如果「標題」節點可能存在也可能不存在,你可以這樣做:(string)setNode.Descendants(「title」)。FirstOrDefault() – 2009-09-08 16:39:13

0

我知道這已經回答和接受,但我不禁點你可以用LINQ做更多的事情。

collectionXML 
    .Elements("sets") 
    .Elements("set") 
    .Select(c => c) 
    .Each(x => SetValue(x)); 

void SetValue(XElement element) 
{ 
    myString = element.GetElementValue("title"); 
} 

// Each extension method (needs to be in a static class) 
public static void Each<T>(this IEnumerable<T> items, Action<T> action) 
{ 
    foreach (var item in items) action(item); 
}