C# 将XML属性读入列表

C# 将XML属性读入列表,c#,xml,list,httpwebrequest,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值并将其保存到列表中。开始这样做,但

我是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值并将其保存到列表中。开始这样做,但似乎得到了一个作为int的for-xmlnodelist,但它认为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));
List id=new List();
XmlDocument doc=新的XmlDocument();
doc.LoadXml(返回值);
XmlNodeList nodes=doc.SelectNodes(“搜索结果/贷款”);
Add(Convert.ToInt32(nodes[“an_id”].InnerText));
这也是将an_id添加到列表中后的一种方法。列表中的每个项都将其用作新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>

..对于列表中的每一个节点,它都会添加一个具有值的新节点

使用
xml
作为包含xml代码的字符串:

var ids = XDocument.Parse(xml).
    Descendants("AN").
    Select(e => (string)e.Attribute("an_id")).
    ToList();
但是,从您的示例来看,属性似乎并不总是整数。你确定你的转换吗?根据您最近的评论,我将属性的类型转换更改为(string)

当您希望重用列表时,
current
是包含要添加的元素的父元素:

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

SelectNodes
中的XPath表达式与文档不匹配。它可能是
响应/结果/AN
。我彻底改变了你的标题,因为你的问题与WebResponse毫无关系。如果您是从内存中的字符串中获取XML,那么您可能会遇到完全相同的问题。XML来自Web响应,我只是没有显示代码的这一部分。我获取响应并将响应(xml)保存为字符串