将XML属性读入列表

时间:2012-12-20 19:51:17

标签: c# xml list httpwebrequest

我是XML新手,无法从HttpWebResponse读回我的XML响应。

以下是回复:

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

我想提取出an_id值并将其保存到列表中。开始这样做但似乎得到一个for xmlnodelist作为int但它认为nodes [“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项使用它作为新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>

1 个答案:

答案 0 :(得分:4)

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))));