我在這裏選擇了標題,因爲我的問題是我需要獲取示例中提到的Item節點。 我有以下的XML,並且在使用LINQ查詢時遇到了問題,之前我已經能夠解析XML - 但是我一直堅持這個小時,並希望有人能夠提供幫助。 這裏是我下面的XML數據(例如數據):如何使用LINQ在XML中按名稱獲取元素
<a:entry xmlns:a="http://www.w3.org/2005/Atom">
<a:id>98765</a:id>
<info>Data Catalogue</info>
<data>
<items>
<item>
<id>123456</id>
<value>Item One</value>
</item>
<item>
<id>654321</id>
<value>Item Two</value>
</item>
<items>
</data>
<items>
<item>
<id>123456</id>
<value>Item One</value>
</item>
<item>
<id>654321</id>
<value>Item Two</value>
</item>
<items>
<a:author>
<a:name>Catalogue</a:name>
</a:author>
</a:entry>
我希望能夠從中提取下項目的項目XML標籤的ID,但是有一個項目標籤與項目項下的數據,我不根本想要這些節點 - 如果這表示爲路徑,我需要root/items/id/id。我已經嘗試了我所知道的所有關於LINQ的知識,所以如果有人可以提供幫助,需要注意的事情,儘管這是基於系統的示例數據 - 格式無法更改,因此這不是一個可接受的解決方案。
我似乎無法確定我要去哪裏錯了 - 我嘗試的每個LINQ表達式都不會返回任何內容,我認爲這個命名空間是一個問題,並且試圖將其整合,但我正在進行循環。
解決方案必須在Silverlight中工作和C#
我曾嘗試以下:
IEnumerable<XElement> nodes =
element.Elements().Where(e => e.Name.LocalName == "items")
但是這讓我所有的「項目」,包括下的那些「數據」我不想這些。
如果我做我的XML下面我確實看到了元素的名稱顯示:
XElement element = XElement.Parse(data);
foreach (XElement node in element.Elements())
{
MessageBox.Show(node.Name.LocalName);
}
但是當我這樣做,我不能見項目節點名稱在所有 - 我已經檢查了XElement,它確實有節點,當我輸出上面的名稱時,「items」會與info和id一起顯示!
foreach (XElement node in element.Elements("items"))
{
MessageBox.Show(node.Name.LocalName);
}
我想通了 - 那裏是一片空白的額外命名空間聲明 - 加入一個隱含的命名空間來我的XML,使用的XNamespace,這和它添加到元素名稱解決問題! – RoguePlanetoid 2010-11-09 16:52:12