我试图从xml服务返回最后7天的数据,但没有运气。有人能解释一下我是怎么做到的吗?XML如下:
<node>
<api>
<usagelist>
<usage day="2011-01-01">
<traffic name="total" unit="bytes">23579797</traffic>
</usage>
<usage day="2011-01-02">
<traffic name="total" unit="bytes">23579797</traffic>
</usage>
<usage day="2011-01-03">
<traffic name="total" unit="bytes">23579797</traffic>
</usage>
<usage day="2011-01-04">
<traffic name="total" unit="bytes">23579797</traffic>
</usage>
</usagelist>
</api>
</node>编辑
我要检索的数据将用于填充线条图。具体而言,我需要过去7天的日期属性值和流量元素值。现在,我已经有了下面的代码,但是它只显示了第一天7次,第一天的流量是7次。
XDocument xDocument = XDocument.Parse(e.Result);
var values = from query in xDocument.Descendants("usagelist")
select new History
{
day = query.Element("usage").Attribute("day").Value,
traffic = query.Element("usage").Element("traffic").Value
};
foreach (History history in values)
{
ObservableCollection<LineGraphItem> Data = new ObservableCollection<LineGraphItem>()
{
new LineGraphItem() { yyyymmdd = history.day, value = double.Parse(history.traffic) },
new LineGraphItem() { yyyymmdd = history.day, value = double.Parse(history.traffic) },
new LineGraphItem() { yyyymmdd = history.day, value = double.Parse(history.traffic) },
new LineGraphItem() { yyyymmdd = history.day, value = double.Parse(history.traffic) },
new LineGraphItem() { yyyymmdd = history.day, value = double.Parse(history.traffic) },
new LineGraphItem() { yyyymmdd = history.day, value = double.Parse(history.traffic) },
new LineGraphItem() { yyyymmdd = history.day, value = double.Parse(history.traffic) },
};
lineGraph1.DataSource = Data;
}发布于 2011-01-10 22:50:03
这将为您提供一个列表,其中包含具有Date和Traffic属性的元素,这些属性来自于您的XML过去7天:
var trafficList = xmlDoc.Descendants("usage")
.Where(d => (DateTime.Now.Date - DateTime.Parse(d.Attribute("day").Value).Date) <= TimeSpan.FromDays(7))
.Select(d => new
{ Day = d.Attribute("day").Value,
Traffic = d.Descendants("traffic").First().Value
})
.ToList();现在您已经拥有了数据,您可以创建一个新的集合并一个一个地添加流量数据:
ObservableCollection<LineGraphItem> Data = new ObservableCollection<LineGraphItem>();
foreach (var history in trafficList)
Data.Add(new LineGraphItem() { yyyymmdd = history.Day, value = double.Parse(history.Traffic) });https://stackoverflow.com/questions/4643414
复制相似问题