Прочитайте файл XML и сохраните содержимое в память WP7 - PullRequest
0 голосов
/ 24 октября 2011

У меня есть XML с данными, в этом случае изображения хранятся в интернете. Я хочу прочитать XML в Windows Phone и сохранить его в памяти. Как я могу это сделать?любой учебник?

Ответы [ 2 ]

3 голосов
/ 24 октября 2011

Позволяет разделить вашу задачу на две части

1.Загрузка файла XML, содержащего путь к изображению

2.Чтение этого XML-файла и привязка изображения к этому динамическому пути

Перейдем к первому случаю:

1.Загрузка файла XML, содержащего путь к изображению

здесь Путь = http://server_adrs/XML_FILE

iso_path = Путь внутри изолированного хранилища, где вы хотите сохранить файл XML.

    public void GetXMLFile(string path)
    {
        WebClient wcXML = new WebClient();
        wcXML.OpenReadAsync(new Uri(path));
        wcXML.OpenReadCompleted += new OpenReadCompletedEventHandler(wc);

    }

    void wc(object sender, OpenReadCompletedEventArgs e)
    {
        var isolatedfile = IsolatedStorageFile.GetUserStoreForApplication();
        using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(iso_path, System.IO.FileMode.Create, isolatedfile))
        {
            byte[] buffer = new byte[e.Result.Length];
            while (e.Result.Read(buffer, 0, buffer.Length) > 0)
            {
                stream.Write(buffer, 0, buffer.Length);
            }
            stream.Flush();
            System.Threading.Thread.Sleep(0);
        }            
    }

2.Чтение XML-файла и привязка изображения к динамическому пути

здесь у меня есть список, который показывает изображения, так что я буду функцией для привязки изображений к этому списку, как показано ниже.

    public IList<Dictionary> GetListPerCategory_Icon(string category, string xmlFileName)
    {
        using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            if (storage.FileExists(xmlFileName))
            {
                using (Stream stream = storage.OpenFile(xmlFileName, FileMode.Open, FileAccess.Read))
                {
                    try
                    {
                        loadedData = XDocument.Load(stream);
                        var data = from query in loadedData.Descendants("category")
                                   where query.Element("name").Value == category
                                   select new Glossy_Test.Dictionary
                                   {
                                        Image=GetImage((string)query.Element("iconpress")),//This is a function which will return Bitmap image

                                   };
                        categoryList = data.ToList();
                    }

                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message.ToString(), (((PhoneApplicationFrame)Application.Current.RootVisual).Content).ToString(), MessageBoxButton.OK);
                        return categoryList = null;
                    }
                }
            }
        }

        return categoryList;
    }

и вот определение для вышеуказанной функции

     public BitmapImage GetImage(string imagePath)
    {
        var image = new BitmapImage();
        imagePath = "/Glossy" + imagePath;
        using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            if (storage.FileExists(imagePath))
            {
                using (Stream stream = storage.OpenFile(imagePath, FileMode.Open, FileAccess.Read))
                {                       
                    image.SetSource(stream);                        

                }
            }
        }
        return image;
    }
0 голосов
/ 24 октября 2011

вы можете использовать WebClient для извлечения xml с сервера и затем сохранить его как XDocument в вашем обратном вызове.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...