Сбой чтения XML в изолированном файле - PullRequest
0 голосов
/ 28 февраля 2011

Хорошо, в общем, моя проблема с чтением и файлом XML из IsolatedFileStorage.Я пройду процесс, который приведет к моей ошибке, и затем я перечислю соответствующий код и файл XML.

  1. При первом выполнении он распознает, что файл не существует - поэтому он создаетфайл в IsolatedFileStorage
  2. При втором выполнении он теперь может видеть, что файл существует, и поэтому загружает файл XML
  3. При третьем выполнении он может видеть, что он существует - но он выбрасываетошибка XML

Я не могу найти решение этой проблемы (ссылка на другое обсуждение MSDN здесь )

Итак, код для чтения/ Создание XML-файла в IsolatedFileStorage выглядит следующим образом:

try
{
      /***********************
       * CHECK THE SETTINGS
       ********************/
       if (store.FileExists("AppSettings.xml"))
       {
            streamSettings = new IsolatedStorageFileStream("AppSettings.xml", System.IO.FileMode.Open, store);
            DebugHelp.Text = "AppSettings.xml exists... Loading!";
            streamSettings.Seek(0, System.IO.SeekOrigin.Begin);
            xmlDoc = XDocument.Load(streamSettings, LoadOptions.None);
       }
       else
       {
            streamSettings = new IsolatedStorageFileStream("AppSettings.xml", System.IO.FileMode.Create, store);
            DebugHelp.Text = "AppSettings.xml does not exist... Creating!";
            xmlDoc = XDocument.Load("AppSettings.xml", LoadOptions.None);
       }

       if (xmlDoc != null)
            xmlDoc.Save(streamSettings);
}
catch (Exception e)
{
       DebugHelp.Text = e.ToString();
}
finally
{
       streamSettings.Close();
}

И связанный с ним XML-файл выглядит следующим образом:

<?xml version="1.0" encoding="utf-8" ?>
<Settings>
</Settings>

Очень продвинутый, я знаю - однако он выдает следующую ошибку ( здесь ) и вы можете найти полный текст ошибки в нижней части страницы Social.MSDN.

Пожалуйста, помогите - я искал решение (как в соц.MSDN сайт не работалk) в течение примерно 2 недель.

Ответы [ 3 ]

1 голос
/ 28 февраля 2011

Почему бы вам не попробовать прочитать файл с помощью простого StreamReader?Ниже приведена часть метода, который я создал для чтения файла из хранилища.Попробуйте, проверьте свой контент, а затем попробуйте загрузить XML из строки (XDocument.Parse и т. Д.)

0 голосов
/ 28 февраля 2011

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

Чтобы помочь отладить это, попробуйте использовать http://wp7explorer.codeplex.com/ - это может помочь вам увидеть необработанный файл "на диске"

В качестве отступления, для настроек в целом, выполнитепроверьте AppSettings, которые IsolatedStorage предоставляет по умолчанию - если у вас нет сложных потребностей, то их может быть достаточно самостоятельно.

0 голосов
/ 28 февраля 2011

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

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

...