C#的DataGridView绑定到XML子集的(C# DataGridView binding t

2019-10-28 10:53发布

我需要有条件地填充的DataGridView。 该数据来自一个XML文件,例如:

<?xml version="1.0" standalone="yes"?>
<people>
  <person>
    <name>Bob</name>
    <dogs>
      <dog><name>Rover</name></dog>
      <dog><name>Rex</name></dog>
    </dogs>
  </person>
  <person>
    <name>Jim</name>
    <dogs>
      <dog><name>Duke</name></dog>
      <dog><name>Colin</name></dog>
      <dog><name>Gnasher</name></dog>
    </dogs>
  </person>
</people>

如果我用下面的代码,我可以显示在DataGridView所有的狗 - 但我需要将列表限制为那些由特定的人拥有。

DataSet ds = new DataSet();
ds.ReadXml("data.xml");

dataGridView1.DataSource = ds;
dataGridView1.DataMember = "dog";

我该怎么做呢?

由于斯图尔特

Answer 1:

你可以用下面的代码的XElements:

var xml = XDocument.Load(filePath);

var people = xml.Elements("people").Elements("person");
var dogElements = people.Elements("dogs").Elements("dog").Where(p => p.Parent.Parent.Element("name").Value == "Bob");

var dogs = dogElements.Select(d => new {Name = d.Element("name").Value, Owner = d.Parent.Parent.Element("name").Value});

dataGridView1.DataSource = dogs;
dataGridView1.DataMember = "Name";

只是作为一个例子,我选择了狗的主人以及在这里。

你必须添加一个参考的System.Xml和System.Xml.Linq的



文章来源: C# DataGridView binding to subset of XML