我不确定我是否正确地提出了这个问题,但我正试图让“Jim”使用下面的xml doc在数据网格中显示他的两个作业。 我的预期结果:
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>
答案 0 :(得分: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:为每个Person添加新行,为每个职位/公司添加新Cell或创建一个简单数据源,用数据填充并将其提供给DataGridView对象。
创建数据对象类人:
public class Person
{
public string Name { get; set; }
public string Title { get; set; }
public string Company { get; set; }
}
创建人员的列表,用XML中的数据填充它,并将其设置为DataGridView的数据源:
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;