我目前正在尝试反序列化以下消息:
<Message Id="1234">
<Body>This</Body>
<Body>Is</Body>
<Body>Test</Body>
<Body>Text</Body>
</Message>
使用以下对象:
public class Message
{
[XmlAttribute("Id")]
public string Id { get; set; }
[XmlArrayItem("Body")]
public List<string> data { get; set; }
public Message()
{
data = new List<string>();
}
}
对象成功反序列化,但是,Message.data.Count为0.我尝试在数据中添加[XmlArray(ElementName="Message")]
标记,但字符串仍为空。
提前谢谢!
答案 0 :(得分:0)
将[XmlArrayItem("Body")]
更改为[XmlElement("Body")]
:
public class Message
{
[XmlAttribute("Id")]
public string Id { get; set; }
[XmlElement("Body")]
public List<string> data { get; set; }
public Message()
{
data = new List<string>();
}
}
这告诉XmlSerializer
该列表将被格式化为一级元素序列而不是两级嵌套列表。
使用XmlArrayItem
,您的XML需要如下所示:
<Message Id="1234">
<data>
<Body>This</Body>
<Body>Is</Body>
<Body>Test</Body>
<Body>Text</Body>
</data>
</Message>