如何解决XmlSerializer未序列化列表
我很不幸要序列化对象列表。
这是我要序列化的XML。
<Root version="1">
<Elements>
<Element>
<Id>c5b9f5d9-0671-4769-8a3a-8e7ce06b889d</Id>
<GroupId>c5b9f5d9-0671-4769-8a3a-8e7ce06b889d</GroupId>
<Dwell>10</Dwell>
</Element>
<Element>
<Id>67d3ffba-b405-4d1e-8dbb-ea21d0ba4e7b</Id>
<GroupId>67d3ffba-b405-4d1e-8dbb-ea21d0ba4e7b</GroupId>
<Dwell>10</Dwell>
</Element>
<Element>
<Id>3b5d421d-3b93-461d-af77-d1b1e922a092</Id>
<GroupId>3b5d421d-3b93-461d-af77-d1b1e922a092</GroupId>
<Dwell>10</Dwell>
</Element>
<Element>
<Id>a24e3fce-846c-45ec-8a08-79add8f9024e</Id>
<GroupId>a24e3fce-846c-45ec-8a08-79add8f9024e</GroupId>
<Dwell>10</Dwell>
</Element>
</Elements>
</Root>
这是它要消毒的类。
[XmlRoot("Root")]
public class TourRoot:BaseXmlWriter
{
[XmlAttribute("version")]
public int Version { get; set; }
[XmlElement("Elements")]
public List<TourRootElement> Elements { get; set; }
}
[XmlRoot("Element")]
public class TourRootElement
{
[XmlElement("Id")]
public string Id { get; set; }
[XmlElement("GroupId")]
public string GroupId { get; set; }
[XmlElement("Dwell")]
public int Dwell { get; set; }
}
这是试图对其进行消毒的代码。
var serializer = new XmlSerializer(typeof(TourRoot));
var reader = new StringReader(entity.XmlData);
var tour = serializer.Deserialize(reader) as TourRoot;
发生了什么: 消毒器将创建对象,在version属性中添加正确的值,创建列表,并仅向列表中添加1个元素,其中包含所有默认值,而不是正确值。甚至更奇怪的是,当我使用这些元素之一并尝试对其进行反序列化时,该元素对于该对象而言是正确的。
我的问题: 为什么列表无法正确填充?
解决方法
我能够弄清楚这一点。
我需要在列表中添加几个属性。
[XmlArray("Elements"),XmlArrayItem(typeof(TourRootElement),ElementName = "Element")]
public List<TourRootElement> Elements { get; set; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。