我有以下样例XML文件,我需要从中弹出一个ListView。我已经玩了几个小时了,但我不知道最好的方法。我想使用Linq来实现这一点,但我的知识有点欠缺。这是一个Winforms c#项目。
<DMs>
<dataModule>
<DMC>11111</DMC>
<techName>Test Techname 1</techName>
<infoName>info 1</infoName>
<status>complete</status>
<notes>Note 1</notes>
</dataModule>
<dataModule>
<DMC>22222</DMC>
<techName>Test Techname 2</techName>
<infoName>info 2</infoName>
<status>in work</status>
<notes>Note 2</notes>
</dataModule>
<dataModule>
<DMC>33333</DMC>
<techName>Test Techname 3</techName>
<infoName>info 3</infoName>
<status>QA required</status>
<notes>Note 3</notes>
</dataModule>
</DMs>我有以下非常基本的代码,可以用DMC元素文本成功地填充列表视图的第一列,但我需要兄弟元素(techName、infoname、status和notes)来填充列表视图的其他列。
XDocument doc = XDocument.Load(CSDBpath + projectName + "\\Data.xml");
var DMCs = from item in doc.Descendants("dataModule")
select item.Element("DMC").Value;
foreach (var dmc in DMCs)
{
ListViewItem item = new ListViewItem(dmc);
listView1.Items.Add(item);
}发布于 2013-03-20 18:39:19
您需要向ListView中添加适当的列,并填充每个项目的子项:
// Add required columns
listView1.Columns.Add("DMC");
listView1.Columns.Add("Tech Name");
listView1.Columns.Add("Info Name");
listView1.Columns.Add("Status");
listView1.Columns.Add("Notes");
XDocument doc = XDocument.Load(CSDBpath + projectName + "\\Data.xml");
foreach (var dm in doc.Descendants("dataModule"))
{
ListViewItem item = new ListViewItem( new string[]
{
dm.Element("DMC").Value,
dm.Element("techName").Value,
dm.Element("infoName").Value,
dm.Element("status").Value,
dm.Element("notes").Value
});
listView1.Items.Add(item);
}发布于 2013-03-20 18:41:58
XDocument doc = XDocument.Load(CSDBpath + projectName + "\\Data.xml");
var DMCs = from item in doc.Descendants("dataModule")
select new {
dmc: item.Element("techName").Value,
techName: item.Element("DMC").Value,
infoName: item.Element("infoName").Value,
status: item.Element("status").Value,
notes: item.Element("notes").Value,
};
ListViewItem item = null;
foreach (var dmc in DMCs)
{
item = new ListViewItem(dmc);
listView1.Items.Add(item);
}我希望这能起作用,但还没有测试..
https://stackoverflow.com/questions/15520820
复制相似问题