0

不确定我是否正确地提出了这个问题,但我正在尝试使用下面的 xml 文档让“Jim”在他的两项工作的数据网格中显示。我的预期结果:

Jim, male, mechanic,joe's shop
Jim, male, janitor, microsoft

XML 文档:

<?xml version="1.0" encoding="UTF-8"?>
<Employment>
    <Person>
        <Name>
            <![CDATA[Jim]]>
        </Name>
        <Gender>
            <![CDATA[male]]>
        </Gender>
        <Jobs>
            <Job>
                <Title>
                    <![CDATA[mechanic]]>
                </Title>
                <Company>
                    <![CDATA[joe's shop]]>
                </Company>
            </Job>
            <Job>
                <Title>
                    <![CDATA[janitor]]>
                </Title>
                <Company>
                    <![CDATA[microsoft]]>
                </Company>
            </Job>
        </Jobs>
    </Person>
</Employment>
4

1 回答 1

0

使用 LINQ2XML 获取数据可以这样完成(变量 xmlSource 保存 xml 代码):

var xml = XElement.Parse(xmlSource);
var jobs = xml.Descendants("Job").ToList();
var person = xml.Element("Person").Elements("Name").First().Value;
foreach (var job in jobs)
{
    Console.WriteLine(string.Format("{0} - {1}", person, job.Element("Title").Value));
}

对于 DataGridView:为每个人添加新行,为每个职位/公司添加新单元格,或者创建一个简单的数据源,用数据填充它并将其提供给 DataGridView 对象。

创建一个数据对象类Person

public class Person
{
    public string Name { get; set; }
    public string Title { get; set; }
    public string Company { get; set; }
}

创建一个Person的列表,用 XML 中的数据填充它,并将其设置为 DataGridView 的 DataSource:

var persons = new List<Person>();
var xml = XElement.Parse(xmlSource);
var jobs = xml.Descendants("Job").ToList();
var person = xml.Element("Person").Elements("Name").First().Value;
foreach (var job in jobs)
{
    persons.Add(new Person 
    {
        Name = person,
        Title = job.Element("Title").Value,
        Company = job.Element("Company").Value
    });
}

dataGridViewControl.DataSource = persons;

在此处输入图像描述

于 2013-06-26T19:20:49.370 回答