2012-12-20 66 views
3

我是XML新手,無法從HttpWebResponse讀取XML響應。將XML屬性讀入列表

這裏是迴響應:

<RESPONSE version="1.2"> 
<RESULTS> 
    <AN an_type="C" 
    an_id="783hdryfdg56a2" 
    an_num="1" 
    an_status="100" /> 
    <RESULTS> 
</RESPONSE> 

我期待把解壓出來的an_id值,並將其保存到列表中。開始這樣做,但似乎得到了的XmlNodeList作爲一個int,但它認爲節點[「an_id」]是一個字符串

List<int> IDs = new List<int>(); 
XmlDocument doc = new XmlDocument(); 
doc.LoadXml(returnValue); 
XmlNodeList nodes = doc.SelectNodes("SEARCH_RESULTS/LOAN"); 
LoanIDs.Add(Convert.ToInt32(nodes["an_id"].InnerText)); 

也就是他們一旦an_id的被添加到列表的方式。在列表中的foreach項目使用它作爲aparameter一個新的XML這樣的:

<INPUT> 
     <LOGIN API_ID=""cat"" API_PASSWORD=""dog"" /> 
    <REQUEST> 
     <AN an_id=""@anID"" /> 
     <AN an_id=""@anID"" /> 
     ....foreach one in list it adds a new node with the value 
    </REQUEST> 
</INPUT> 
+0

在'SelectNodes'不匹配文檔的XPath表達式。它應該是'RESPONSE/RESULTS/AN'。 – Oded

+1

我從根本上改變了你的標題,因爲你的問題與WebResponse完全沒有關係。如果你從內存中的字符串中取得了這個XML,你將會遇到完全相同的問題。 –

+0

Xml來自WebResponse我只是沒有顯示那部分代碼。我得到的響應和保存響應(xml)字符串 – Jt2ouan

回答

3

隨着xml是你的字符串與XML代碼:

var ids = XDocument.Parse(xml). 
    Descendants("AN"). 
    Select(e => (string)e.Attribute("an_id")). 
    ToList(); 

然而,從您的樣品也似乎沒有該屬性始終是一個整數。 你確定你的轉換嗎? 根據您最新的評論,我將屬性轉換爲(字符串)。

當你想重用列表,current是包含您要添加的人的父元素:

current.Add(ids.Select(i => new XElement("AN", new XAttribute("an_id", i)))); 
+0

yesah只是看我認爲他們應該是字符串 – Jt2ouan