XmlDocument.Save不更新xml文件属性

时间:2013-11-20 15:36:42

标签: c# xml datagridview xmldocument

我需要帮助弄清楚 doc.save 的工作原理。

后台:有一个c#方法从xml文档中获取属性。然后我将这些作为Windows格式的DataGridView的数据集发送。我试图这样做,以便当用户编辑表单时,xml值会更新。

首先我解析XML:Updater.cs

XmlNodeList elemList = doc.GetElementsByTagName("property");
for (int i = 0; i < elemList.Count; i++)
{
    if (elemList[i].Attributes["value"] != null)
    {
        AppProperty property = new AppProperty(elemList[i].Attributes["name"].Value, elemList[i].Attributes["value"].Value);
        properties.Add(property);
    }
}

然后我将其发送到表单并更新表单数据集: Form1.cs的

private void Form1_Load(object sender, System.EventArgs e)
{
    this.dataGridView1.SelectionMode =
    DataGridViewSelectionMode.FullRowSelect;
    this.dataGridView1.DataSource = properties;
    this.dataGridView1.AutoGenerateColumns = false;
}

现在,当用户编辑时,我会触发一个事件监听器:Form.cs

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    updater.updateSave();
}

然后返回我的updater类并保存文档:Updater.cs

public void updateSave()
{
    foreach (string f in filePaths)
            doc.Save(f);
}

该文件看起来已保存,因为它已将“修改日期:”更新为我使用保存的那一刻。我确定有一些参考价值混淆但我无法弄明白

为什么没有进行更改?

1 个答案:

答案 0 :(得分:1)

您没有更改XML文档,而是更改某些属性的副本

if (elemList[i].Attributes["value"] != null)
{
     //You're making a copy of the attribute's value here:
     AppProperty property = new AppProperty(elemList[i].Attributes["name"].Value, elemList[i].Attributes["value"].Value);
     properties.Add(property);
}

GridView更改properties数据集,这些更改不会传播回XML文档。