首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从XML文件填充ListView

从XML文件填充ListView
EN

Stack Overflow用户
提问于 2013-03-20 18:20:47
回答 2查看 11.5K关注 0票数 2

我有以下样例XML文件,我需要从中弹出一个ListView。我已经玩了几个小时了,但我不知道最好的方法。我想使用Linq来实现这一点,但我的知识有点欠缺。这是一个Winforms c#项目。

代码语言:javascript
复制
<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)来填充列表视图的其他列。

代码语言:javascript
复制
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);

                }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-20 18:39:19

您需要向ListView中添加适当的列,并填充每个项目的子项:

代码语言:javascript
复制
// 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);
}
票数 4
EN

Stack Overflow用户

发布于 2013-03-20 18:41:58

代码语言:javascript
复制
 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);
 }

我希望这能起作用,但还没有测试..

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15520820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档