【发布时间】:2020-01-30 20:43:12
【问题描述】:
我有问题。我有以下 XML:
<Data>
<Images>
<Image>
<Id></Id>
<Name></Name>
</Image>
<Image>
<Id></Id>
<Name></Name>
</Image>
</Images>
</Data>
还有以下类:
[XmlRoot("Data")]
public class MyData
{
[XmlArray("Images")]
[XmlArrayItem("Image")]
public List<myImage> Images { get; } = new List<myImage>();
}
public class myImage
{
public int Id { get; set; }
public string Name { get; set; }
public ImageSource imageSource { get; set; }
}
但是当我使用以下方法反序列化 XML 时:
try
{
var ser = new XmlSerializer(typeof(MyData));
var data = (MyData)ser.Deserialize(new StringReader(xmlString));
App.lstAlbums = data.Albums;
App.lstFotos = data.Fotos;
App.lstFormaten = data.Formaten;
}
catch (Exception e)
{
//Give Error
}
我收到以下错误:There was an error reflecting type 'MyApp.Models.MyData'
我收到此错误的原因是因为在 XML 中我没有 imageSource 的标签,而它在类中。如何反序列化 XML 与 imageSource 仍在我的类中,但不在 XML 中?
【问题讨论】:
-
您还缺少一些结束标签,因此它不是有效的 XML。
-
很抱歉,我的代码中有有效的 XML。我马上改!
-
您确定是因为缺少标签吗?我原以为它只会反序列化它可以反序列化的内容,并且该属性将只是
null。如果你注释掉imageSource你是说它工作正常? -
是的,我已经将 imageSource 注释掉了,然后没有崩溃,但是我需要 imageSource,所以这就是问题
-
事实上我会说这是XmlSerializer - There was an error reflecting type的副本,同意吗?
标签: c# xml parsing serialization