我剛學習XDocument和LINQ查詢。下面是一些簡單的XML(這看起來並不在這個論壇在我的瀏覽器完全正確的格式,但你的想法。)Noob LINQ - 使用XDocument讀取,過濾XML
<?xml version="1.0" encoding="utf-8"?>
<quiz
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.com/name XMLFile2.xsd"
title="MyQuiz1">
<q_a>
<q_a_num>1</q_a_num>
<q_>Here is question 1</q_>
<_a>Here is the answer to 1</_a>
</q_a>
<q_a>
<q_a_num>2</q_a_num>
<q_>Here is question 2</q_>
<_a>Here is the answer to 2</_a>
</q_a>
</quiz>
我可以在XML文件中所有的元素進行迭代,並顯示其名稱,價值,和節點類型在這樣一個列表框,沒有問題:
XDocument doc = XDocument.Load(sPath);
IEnumerable<XElement> elems = doc.Descendants();
IEnumerable<XElement> elem_list = from elem in elems
select elem;
foreach (XElement element in elem_list)
{
String str0 = "Name = " + element.Name.ToString() +
", Value = " + element.Value.ToString() +
", Nodetype = " + element.NodeType.ToString();
System.Windows.Controls.Label strLabel = new System.Windows.Controls.Label();
strLabel.Content = str0;
listBox1.Items.Add(strLabel);
}
...但現在我想一個「where」子句添加到我的查詢,讓我只能選擇具有特定名稱的元素(如,「qa」)但我的元素列表空了。我試過了 。 。 。
IEnumerable<XElement> elem_list = from elem in elems
where elem.Name.ToString() == "qa"
select elem;
有人請解釋我在做什麼錯嗎? (並且一般來說有一些調試查詢的好技巧?)提前致謝!
然而,讓不合格的字符串名字,他可以用'elem.Name。 LocalName.' – 2010-04-14 04:06:43