используя linq для xml в silverlight? - PullRequest
3 голосов
/ 20 сентября 2011

Я реализовал веб-приложение (asp.net, c #), где у него есть несколько страниц. Каждая страница имеет возможность считывать значения из файла XML и переходит в несколько текстовых полей на каждой странице. У пользователя естьВозможность редактировать значения и сохранить, который в свою очередь сохраняет файл XML. Я использовал linq to xml.

Я должен перейти к Silverlight. Поэтому я пытаюсь реализовать ту же логику в новомПроект Silverlight. Я пытаюсь использовать linq to xml в Silverlight. Но кое-как я не могу прочитать XML-файл, которого нет в xap-файле. Вот мой код

 XDocument doc = Document.Load("C:\Data\Data.exe.config");
            var applicationSettings = (from x in doc.Descendants("applicationSettings")
                                       from kvpair in .Element("Data.Properties.Settings").Elements("setting")
                                       select new
                                       {
                                           Name = kvpair.Attribute("name").Value,
                                           Node = kvpair.Element("value")
                                       }).ToDictionary(x => x.Name, y => y);

            string Account  = applicationSettings["Account no"].Node.Value.ToString();
           txtAccountno.Text = AttendanceWindow;
            string Details=applicationSettings["Details"].Node.Value.ToString();
            txtDetails.Text = Details;

Ответы [ 3 ]

3 голосов
/ 20 сентября 2011

Я предполагаю, что "C: \ Data \ Data.exe.config" это файл, который находится на сервере?Имейте в виду, что Silverlight выполняется на стороне клиента.Вам не только нужно дать Silverlight разрешение на доступ к этому каталогу (см. Эту ссылку для некоторых деталей) , но вы также получите доступ к жесткому диску клиента, а не к серверу.Чтобы получить содержимое этого файла, вам лучше будет выполнить синтаксический анализ серверной части XML и отправить все необходимые настройки из него в Silverlight через веб-службы.

Если файл действительно находится на компьютере клиента, тогда вам нужно создать проект Silverlight вне браузера: http://msdn.microsoft.com/en-us/library/ee721082(VS.95).aspx

РЕДАКТИРОВАТЬ:

Ах, я думаю, что я вижу, что происходит сейчас.Метод Document.Load по умолчанию предполагает, что URI указывает на ресурс в XAP: http://msdn.microsoft.com/en-us/library/bb538371(v=vs.95).aspx

То, что вам, вероятно, потребуется, описано в этой статье MSDN, в которой для загрузки будет использоваться потоковый подходXML: http://msdn.microsoft.com/en-us/library/cc645034(v=vs.95).aspx#Y0

2 голосов
/ 20 сентября 2011

Ваша проблема связана с тем, к каким областям на диске вам разрешен доступ.

Необходимо убедиться, что Silverlight имеет доступ к файлу, имеет права на местоположение файлов и что Silverlight настроен для доступа к локальным файлам. Либо файл необходимо переместить в локальное хранилище, либо запустить его с повышенными привилегиями из браузера.

См. Также: http://www.codeproject.com/KB/silverlight/FileExplorerInSilverlight.aspx для примера доступа к файлам из Silverlight

0 голосов
/ 20 сентября 2011

В Silverlight 5 можно запускать приложение Silverlight в браузере с повышенными разрешениями, что дает вам доступ ко всей файловой системе.В противном случае вы ограничены в изолированном хранилище.

...