C# XML 反序列化一个包含属性和字符串列表的对象会产生一个空列表?
C# XML Deserialize an Object containing an attribute and a list of string yields an empty list?
我目前正在尝试反序列化以下消息:
<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")]
标记,但字符串仍然为空。
提前致谢!
将[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>
我目前正在尝试反序列化以下消息:
<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")]
标记,但字符串仍然为空。
提前致谢!
将[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>