У меня есть класс, чтобы провести некоторые детали для консультанта:Win RT Deserialize XML в объект
namespace MortgageApp_2
{
[KnownType(typeof(MortgageApp_2.AdviserDetails))]
[DataContractAttribute]
public class AdviserDetails
{
[DataMember()]
public string Consultant { get; set; }
[DataMember()]
public string Company { get; set; }
[DataMember()]
public string AddressOne { get; set; }
[DataMember()]
public string AddressTwo { get; set; }
[DataMember()]
public string City { get; set; }
[DataMember()]
public string County { get; set; }
[DataMember()]
public string Postcode { get; set; }
[DataMember()]
public string Telephone { get; set; }
}
}
Следующий код стерилизует AdviserDetails в XML:
StorageFolder folder = ApplicationData.Current.LocalFolder;
string fileName = "AdviserDetails.xml";
CreationCollisionOption options = CreationCollisionOption.ReplaceExisting;
try
{
var file = await folder.CreateFileAsync(fileName, options);
using (var stream = await file.OpenStreamForWriteAsync())
{
var ser = new DataContractSerializer(typeof(AdviserDetails));
ser.WriteObject(stream, adDetails);
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.ToString());
if (Debugger.IsAttached)
Debugger.Break();
throw;
}
Созданный файл XML выглядит следующим образом:
<AdviserDetails xmlns="http://schemas.datacontract.org/2004/07/MortgageApp_2" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><AddressOne>242 Office Block</AddressOne><AddressTwo>32 Hill Street</AddressTwo><City>Birmingham</City><Company>Best Mortgages</Company><Consultant>Bill Jones</Consultant><County>West Midlands</County><Postcode>B1 1AB</Postcode><Telephone>05100021300</Telephone></AdviserDetails>
следующий код используется для десериализации XML для объекта типа AdviserDeta ILS:
StorageFolder folder = ApplicationData.Current.LocalFolder;
string fileName = "AdviserDetails.xml";
string location = folder.Path + "\\" + fileName;
var file = await StorageFile.GetFileFromPathAsync(location).AsTask().ConfigureAwait(false);
var stream = await file.OpenStreamForReadAsync().ConfigureAwait(false);
var serializer = new XmlSerializer(typeof(AdviserDetails));
var loadAdviser = (AdviserDetails)serializer.Deserialize(stream.AsInputStream().AsStreamForRead());
Однако, последняя строка:
var loadAdviser = (AdviserDetails)serializer.Deserialize(stream.AsInputStream().AsStreamForRead());
Выдает исключение:
Существует ошибка в документе XML (1, 2).
Кто-нибудь знает, что не так, и как я могу получить свое приложение для создания файла XMl, который он может читать?
Спасибо! :)
Понял работает, в конце концов, спасибо вы очень за ссылку. :) Реализация XML-материала в Win RT - настоящая миссия! – Cheese1223