We wpisie o LinqToXml pisałem jak można czytać z pliku XML. Co jednak z zapisywaniem? Otóż jest to równie łatwe. Znowu zaprzęgniemy do pracy Linq. Najpierw oczywiście otwieramy plik a następnie pozostaje stworzyć XDocument z zawartością. Zawartość możemy dodawać ręcznie albo (jak na przykładzie poniżej) wybrać elementy za pomoca Linq i zwrócić je w takiej postacji jakiej chcemy mieć je zapisane.

Najważniejsze to obiekty to XElement i XAttribute


SaveFileDialog saveFile = new SaveFileDialog();
if (saveFile.ShowDialog() == true)
{
 var outputFile = saveFile.OpenFile();
 XDocument outputXml = new XDocument(
new XElement('Controls', from arControl in settingsCollection
select new XElement('Control',
new XAttribute('id', control.OriginalKey),
new XAttribute('x', control.X),
new XAttribute('y', control.Y))
 )
 );
 outputXml.Save(outputFile);
 outputFile.Flush();
 outputFile.Close();
 }