Это следующий вопрос от How to create an empty xml in Windows Phone 8.System.InvalidOperationException при чтении из xml в WP8
Я сделал это, чтобы создать XML:
public void create()
{
List<DataModel> __dataList = new List<DataModel>();
XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
xmlWriterSettings.Indent = true;
using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile("Data.xml", FileMode.Create))
{
XmlSerializer serializer = new XmlSerializer(typeof(List<DataModel>));
using (XmlWriter xmlWriter = XmlWriter.Create(stream, xmlWriterSettings))
{
serializer.Serialize(stream, __dataList);
}
}
}
}
Когда я пытаюсь прочитать его с этим кодом, я получаю еще один System.InvalidOperationException
public void read()
{
List<DataModel> __dataList = new List<DataModel>();
try
{
using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile("Data.xml", FileMode.Open))
{
XmlSerializer serializer = new XmlSerializer(typeof(List<DataModel>));
__dataList = (List<DataModel>)serializer.Deserialize(stream);
}
}
}
catch (Exception e)
{
string s = e.Message;
e.ToString();
}
}
Сообщение исключение «Существует ошибка в XML-документ (2, 118). " Что не так с моим кодом?
Редактировать: Внутреннее исключение: «Данные на корневом уровне недействительны. Строка 2, позиция 118.»
Edit 2: Я прочитал содержимое XML с использованием StreamReader.ReadToEnd()
перед тем десериализации и это возвращенная строка: <?xml version="1.0" encoding="utf-8"?> <ArrayOfDataModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
Это мой первый раз работает с XML, поэтому вопрос может быть простым но я не могу этого понять. Любая помощь?
Вы должны попытаться отобразить содержимое вашего XML-файла, чтобы понять, что происходит –
В частности, a: что находится в файле xml в (2,118) и b: что такое '.InnerException.Message', '.InnerException.InnerException.Message',' .InnerException.InnerException.InnerException.Message' и т. Д.? 'XmlSerializer' фактически дает ** действительно действительно ** подробные сообщения: вам просто нужно посмотреть несколько уровней дальше в' Exception' –
@KooKiz, где будет храниться XML-файл? –