我有一堂课可以为顾问提供一些详细信息:
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 反序列化为 AdviserDetails 类型的对象:
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 文件?
谢谢!:)