![](/img/trans.png)
[英]C# Deserialise XML into mutiple arrays only deserialise the first array
[英]Deserialise XML array at document root
关于.Net的XML序列化的另一个问题。
我从第三方收到一个XML字符串,并希望将其解析为.Net类,而不用大惊小怪。 我不想使用xsd,因为我的XML非常简单,我不喜欢它吐出的冗长类。 我已经得到了反序列化的基础知识,但我正在努力使用根级别数组。
问题XML如下:
<people>
<person>
<id>1234</id>
</person>
<person>
<id>4567</id>
</person>
</people>
如何映射C#People类的属性以对其进行反序列化?
这是我想要的工作,但事实并非如此。
[Serializable()]
[XmlRootAttribute("people", Namespace = "", IsNullable = false)]
public class People
{
[XmlArrayItem(typeof(Person), ElementName = "person")]
public List<Person> Persons;
}
如果我将XML修改为:
<result>
<people>
<person>
<id>1234</id>
</person>
<person>
<id>4567</id>
</person>
</people>
</result>
然后它适用于下面的类定义,但感觉非常错误。
[Serializable()]
[XmlRootAttribute("result", Namespace = "", IsNullable = false)]
public class People
{
[XmlArray(ElementName = "people")]
[XmlArrayItem(typeof(Person), ElementName = "person")]
public List<Person> Persons;
}
[XmlElement("person")]
public List<Person> Persons;
虽然我更喜欢:
private List<Person> persons;
[XmlElement("person")]
public List<Person> Persons {get{return persons??(persons=new List<Person>());}}
因为这有:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.