2014-05-15 58 views
1

所以我試圖解析通過REST API調用返回的一些XML。該XML看起來是這樣的(當然,還有更多<link>的):XElement將我的XML文件解析爲一個巨大元素,我該如何解決?

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<response status="Ok"> 
<links> 
<link id="79380" hint="Some Text" linkDescription="This is the GET url for this Customer." link="/customer/79380" httpMethod="GET"/> 
</links> 
</response> 

我使用下面的代碼加載XML文件:

Stream resStream = response.GetResponseStream(); 
StreamReader reader = new StreamReader(resStream); 

XElement doc = XElement.Load(reader); 

我再通過像這樣的元素循環:

IEnumerable<XElement> List = 
    from el in doc.Descendants("links") select el; 

foreach (XElement e in List) 
{ 
    test += e.ToString(); 
} 

它只循環一次,test只是一個包含整個XML文件的字符串。我的目標是從每個元素中獲取「id」屬性的值,並將它們放入列表中。

我已經嘗試了各種各樣的東西,而且我似乎無法得到任何東西,只有一個巨大的字符串。

+0

不同於論壇的網站,我們不使用的「謝謝」,或者「任何幫助表示讚賞」,或簽名(因此)。請參閱「[應該'嗨','謝謝,'標語和致敬從帖子中刪除?](http://meta.stackoverflow.com/questions/2950/should-hi-thanks-taglines-and-salutations-be - 從你的帖子中刪除) –

回答

1

試試這個:

var idList = doc.Descendants("link").Select(x => (int)x.Attribute("id")); 
+0

這個工作!謝謝!你介意解釋我做錯了什麼?我仍然在學習這個LINQ to XML的東西 – user3298634

+1

如果你想獲得鏈接元素使用'doc.Descendants( 「link」)',你正在使用'doc.Descendants(「links」)'這就是爲什麼你得到'links'元素而不是'link' –