Десериализовать XML массив в корне документа

Еще один вопрос о сериализации 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;
}
8
задан sipwiz 29 January 2011 в 13:06
поделиться