【问题标题】:Reading XML Attributes into a List将 XML 属性读入列表
【发布时间】:2012-12-20 19:51:16
【问题描述】:

我是 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>

【问题讨论】:

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

标签: c# xml list httpwebrequest


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    相关资源
    最近更新 更多