如何从xml文件向dictonary添加数据
之情况:
我宣布了一个类似
的dictonary Dictonary<string,string> SampleDict=new Dictonary<string,string>();
我的xml文件就像
<Data>
<Element ValOne="1" ValTwo="0" />
<Element ValOne="2" ValTwo="2" />
<Element ValOne="3" ValTwo="4" />
<Element ValOne="4" ValTwo="6" />
<Element ValOne="5" ValTwo="8" />
<Element ValOne="6" ValTwo="10" />
<Element ValOne="7" ValTwo="12" />
<Element ValOne="8" ValTwo="14" />
<Element ValOne="9" ValTwo="16" />
<Element ValOne="10" ValTwo="18" />
</Data>
我需要使用LINQ读取“ValOne”和“ValTwo”的值,并将其插入上面声明的dictonary中
以及如何将dictonary的内容添加到包含两列的listview中。
请帮我这样做
提前致谢
答案 0 :(得分:6)
您可以使用Linq to XML和ToDictionary。
var doc = XDocument.Load("path to xml");
doc.Elements("Element").ToDictionary(
elem => elem.Attribute("ValOne").Value, //Dictionary key
elem => elem.Attribute("ValTwo").Value //Dictionary value
);
ToDictionary
的这个特殊重载使用不同的lambdas来为生成的集合提取键和值。
答案 1 :(得分:4)
大概你想要ValOne成为关键,而ValTwo是值吗?
document.Descendants("Element")
.ToList()
.ForEach(e => SampleDict[e.Attribute("ValOne").Value] = e.Attribute("ValTwo").Value);
这假设您已将XML文件读入XDocument
或XElement
答案 2 :(得分:1)
XElement allData = XElement.Load("File.xml");
var els = allData.Descendants("Element");
foreach(var xe in els)
{
SampleDict[xe.Attribute("ValOne").Value] = xe.Attribute("ValTwo").Value;
}
答案 3 :(得分:1)
在这种情况下,您可能希望使用数据绑定。看看这篇文章:
http://www.codeproject.com/KB/miscctrl/DBListViewForV2.aspx
您需要做的就是......
var items = from xe in els
select {
ValOne = xe.Attribute("ValOne").Value,
ValTwo = xe.Attribute("ValTwo").Value
}
var arr = items.ToArray();
//private DBListView dataBoundListView;
//dataBoundListView.DataSource = this.bindingSource1;
this.bindingSource1.DataSource = arr;