下面的代碼片段簡單的GET屬性:的LINQ到XML從節點聲明
XDocument themes = XDocument.Load(HttpContext.Current.Server.MapPath("~/Models/Themes.xml"));
string result = "";
var childType = from t in themes.Descendants()
where t.Attribute("name").Value.Equals(theme)
select new { value = t.Attribute("type").Value };
foreach (var t in childType) {
result += t.value;
}
return result;
和這裏的XML:
<?xml version="1.0" encoding="utf-8" ?>
<themes>
<theme name="Agile">
<root type="Project">
<node type="Iteration" >
<node type="Story">
<node type="Task"/>
</node>
</node>
</root>
</theme>
<theme name="Release" >
<root type="Project">
<node type="Release">
<node type="Task" />
<node type="Defect" />
</node>
</root>
</theme>
</themes>
我在做什麼錯?我不斷收到一個「未設置爲對象實例的對象」異常。
我試圖返回的是基於父節點類型的選定節點的類型,即如果主題是「敏捷」,父節點是「項目」,那麼返回值應該是「迭代」。這是最後的結果,但是我從來沒有那麼遠,因爲我陷入了上面所看到的情況。
我編輯了我的答案以符合您添加的信息。編輯 – 2010-10-21 17:57:13