0

我想将 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>
4

2 回答 2

1

您要访问的是Attributes 而不是 Elements。您的查询可能会引发异常,至少它没有返回任何结果,说明您在GridView. 使用以下查询获取Attribute值。

var q = from item in xmlDoc.Descendants("client")
        select new
        {
            Name = item.Attribute("ID").Value,
            Mail = item.Attribute("email").Value
        };
于 2013-10-21T14:15:08.767 回答
1

id 和 email 是属性而不是元素!

var q = from item in xmlDoc.Descendants("client")
        select new
        {
            Name = item.Attribute("ID").Value,
            Mail = item.Attribute("email").Value
        };
于 2013-10-21T14:15:17.740 回答