Как включить данные XML в развертывание Windows Phone xap? - PullRequest
1 голос
/ 23 августа 2010

Я работаю над приложением WP7.Приложение будет иметь несколько файлов XML.Некоторые из них предназначены для чтения и записи, а пара только для чтения.Какие у меня есть варианты?IsolatedStorage?Встраивание как ресурсы?

Мне также нужно знать ...

  1. Как мне загрузить XML в XElements из любого из них?
  2. Как мне сохранить из XElement в любой из них?

Ответы [ 2 ]

2 голосов
/ 23 августа 2010

Для доступа к записи вам нужно будет использовать IsolatedStorage. Вы можете проверить, существует ли файл и загрузить его из IsolatedStorage, иначе загрузить его из ресурса. Для доступа только для чтения вы можете просто загрузить его из ресурса. Добавьте xml-файлы в ваш проект, проверьте, что Build Action is Content.

XDocument doc = LoadFromIsolatedStorage(name);
if (doc == null)
{
    doc = LoadFromResource(name);
}

////////////////////////////

public static XDocument LoadFromResource(string name)
{
    var streamInfo = Application.GetResourceStream(new Uri(name, UriKind.Relative));
    using(var s = streamInfo.Stream)
        return XDocument.Load(s);

}

public static XDocument LoadFromIsolatedStorage(string name)
{
    using (var store = IsolatedStorageFile.GetUserStoreForApplication())
    {
        if (store.FileExists(name))
        {
            using(var stream = store.OpenFile(name,FileMode.Open))
                return XDocument.Load(stream);
        }
        else
            return null;
    }
}

public static void SaveToIsolatedStorage(XDocument doc, string name)
{
    using (var store = IsolatedStorageFile.GetUserStoreForApplication())
    {
        var dir = System.IO.Path.GetDirectoryName(name);
        if (!store.DirectoryExists(dir))
            store.CreateDirectory(dir);
        using (var file = store.OpenFile(name, FileMode.OpenOrCreate))
            doc.Save(file);
    }
}
0 голосов
/ 24 августа 2010

Только для размышления, вы хотите запустить "xap" как "exe" со всеми включенными документами?Если это так, вы можете использовать инструмент Desklighter (http://blendables.com/labs/desklighter/).

...