2013-11-20 2 views
0

Мне нужна помощь в определении того, как doc.save работает.XmlDocument.Save не обновляет свойства файла xml

Фон: получил метод C#, который получает свойства из XML-документа. Затем я отправил их в виде набора данных для 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; 
} 

Теперь, когда пользователь редактирует I триггер прослушивателя событий: Form.cs

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

Это затем возвращается к моему обновлению cla сс и сохраняет документ: Updater.cs

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

файл выглядит, как он был сохранен, так как она обновила «Дата Modified:» на данный момент я использовал сохранения. Я уверен, что есть какая-то базовая смесь, но я не могу это понять.

Почему изменения не производятся?

ответ

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 документ.

+0

Обратите внимание, что они не распространяются, поскольку они вообще не связаны с XmlDocument. –

+0

Итак, используя elemList [i] .Attributes ["name"] делает ссылку на документ xml? – Commanderson

+0

Да. Вы можете сохранить эту ссылку в объекте AppProperty и обновить ее перед сохранением документа. – Reda

Смежные вопросы