关于使用.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;
}
[Serializable]
,顺便说一下 - 它不被XmlSerializer
使用。 - Marc Gravell