Вам не нужен XMLWriter или XMLSerializer, но вам нужен сериализатор.
Ниже приведен пример моей универсальной утилиты IsolatedStorage
public static void Save<T>(string fileName, T item)
{
using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream fileStream = new IsolatedStorageFileStream(fileName, FileMode.Create, storage))
{
DataContractSerializer serializer = new DataContractSerializer(typeof(T));
serializer.WriteObject(fileStream, item);
}
}
}
public static T Load<T>(string fileName)
{
using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream fileStream = new IsolatedStorageFileStream(fileName, FileMode.Open, storage))
{
DataContractSerializer serializer = new DataContractSerializer(typeof(T));
return (T)serializer.ReadObject(fileStream);
}
}
}
Когда ВЫ ссылаетесь на XML как на контент XNA, он компилируется через ContentPipeline. Поэтому, когда вы загружаете контент, вы делаете это через ContentManager. Этот файл XML, на который есть ссылка, должен НЕ находиться в ContentPipeline, потому что тогда его нельзя изменить. Вы должны оставить статические файлы, на которые есть ссылки через ContentPipline, и оставить все динамические файлы сохраненными в IsolatedStorage. После того, как файлы скомпилированы, их нельзя изменить, поэтому их нельзя сохранить в ContentPipeline.