【发布时间】:2016-02-26 02:17:14
【问题描述】:
我不知道如何将以下 XML 反序列化为我创建的实体:
<values totalcount="576">
<version>3</version>
<item>
<datetime>2/22/2016 8:35:00 PM - 8:40:00 PM</datetime>
<value channel="Outside" channelid="4">10.0000</value>
</item>
<item>
<datetime>2/22/2016 8:40:00 PM - 8:45:00 PM</datetime>
<value channel="Inside" channelid="2"/>
</item>
</values>
这些是我使用过的类。当我反序列化时,使用正确数量的项目正确创建了 ValueItems 列表,并且我得到了正确的 TotalCount 和 Version 值但是每个 ValueItem 都有其成员的默认值而不是预期值:
public class Values
{
[XmlAttribute(AttributeName = "totalcount")]
public int TotalCount { get; set; }
[XmlElement(ElementName = "version")]
public string Version { get; set; }
[XmlElement(ElementName ="item")]
public List<ValueItem> ValueItems { get; set; }
}
public class ValueItem
{
[XmlElement(ElementName = "datetime")]
public string DateTime { get; set; }
[XmlElement(ElementName="value")]
public SensorValue Value { get; set; }
}
public class SensorValue
{
[XmlAttribute(AttributeName = "channel")]
public string Channel { get; set; }
[XmlAttribute(AttributeName = "channelid")]
public string ChannelId { get; set; }
public string Value { get; set; }
}
我尝试使用 XmlArrayItem("item") 来装饰 ValueItems。我已经尝试过 XmlArrayItem 和 XmlArray。我试过用 XmlType("item") 装饰 ValueItem 类。
有什么想法吗?关于使用 XmlAttributes 的 MSDN 文档并不十分全面。
【问题讨论】: