使用 Linq 解析 XML 时,只能获取一个对象。

3
我将尝试使用以下xml填充数组:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
   <data>
         <item>
              <date>1307018090</date>
              <price>10.4718867</price>
              <low>10.38100000</low>
              <high>10.49000000</high>
              <nicedate>14:39</nicedate>
         </item>
         <item>
              ...
         </item>

等等其他

我正在使用此Linq查询,这意味着它将为每个创建一个对象:

var items = from item in doc.Element("data").Descendants()
                    select new Currency
                    {
                        Close = item.Element("price").Value.ToString(),
                        Date = item.Element("date").Value.ToString(),
                        Low = item.Element("low").Value.ToString(),
                        High = item.Element("high").Value.ToString(),
                        Time = item.Element("nicedate").Value.ToString()
                    };

当我通过foreach遍历items时,只有一个item被选中。我不太熟悉Linq,所以无法确定如何正确构建此语句。 有什么建议吗?

2个回答

6

你需要这样开始 Linq-Xml

var items = 
from item in 
doc.Element("data")
.Elements("item")

1

Descedants() 方法不仅返回子元素,还包括孙子元素、曾孙元素等。因此,LINQ 处理的第二个标签是您第一个 <item><date>,但它没有被处理(我认为这里应该有一个异常,目前无法检查)。

按照 @DaveShaw 的建议,将您的 Descedants() 调用替换为 Elements("item")


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接