Еще один вопрос о сериализации XML в .Net.
Я получаю строку 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;
}