我想将XML加载到DataGridView中,并将datagridview中的更改与XML文件(CRUD)相关联。我尝试了各种方法,我试图找到最好的方法,我已经正确加载和显示XML并通过遍历整个DataGridView并创建一个新的XML文档来保存更改,但这需要大量的处理。我怎样才能以更简单的方式做到这一点? 我正在考虑将XML文件加载到XDocument中的内存中,并在Edit_EventHandler上操作DataGridView上的更改,这样当我想保存更改时,我不必再次解析整个GridView。我尝试过使用LINQ,但查询没有加载到DataGridView:
string path = @"D:\WorkData\users.xml";
xmlDoc = XDocument.Load(path);
var q = from item in xmlDoc.Descendants("client")
select new
{
Name = item.Element("ID").Value,
Mail = item.Element("email").Value
};
dataGridView1.DataSource = q.ToList();
和XML:
<?xml version='1.0'?>
<clients>
<client ID='0000100000' email='email0@mail.com'/>
<client ID='0000100001' email='email1@mail.com'/>
</clients>
答案 0 :(得分:1)
您要访问的是属性而不是元素。您的查询可能会抛出异常,至少它不会返回您GridView
中没有看到任何内容的结果。使用以下查询获取Attribute
值。
var q = from item in xmlDoc.Descendants("client")
select new
{
Name = item.Attribute("ID").Value,
Mail = item.Attribute("email").Value
};
答案 1 :(得分:1)
ID和电子邮件属性不是元素!
var q = from item in xmlDoc.Descendants("client")
select new
{
Name = item.Attribute("ID").Value,
Mail = item.Attribute("email").Value
};