Как мне сериализовать коллекцию XML с номерами в ItemName? - PullRequest
0 голосов
/ 04 февраля 2019

Я искал в Интернете MSDN и Google, чтобы найти ответ на следующий вопрос.

Как мне сериализовать коллекцию, названную следующим образом в c #?

 <foocollection>
 <fooitem1></fooitem1>
 <fooitem2></fooitem2>
 ...
 </foocollection>

Я видел, что вы можете сделать это в DataContract:

[CollectionDataContract(Name="foocollection", ItemName = "fooitem")]
public class FooCollection<T> : List<T> {
    public FooCollection(){}
    public FooCollection(T[] items){ 
      foreach(var i in items){
        Add(i);
      }
    }
}

Сериализатор - это XML-сериализатор по умолчанию из ASP.NET Web API.В этом коде предполагается, что приведенный выше XML-код поступает от клиента.

Я успешно сериализовал вышеприведенное как динамическое, но динамическое не будет приемлемым решением.

Как бы я успешно выполнил сериализацию, используя любое из перечисленных ниже пространств имен или другие, с предупреждением, которое я могу сериализовать для вышеуказанного класса?Я готов добавить дополнительные классы по мере необходимости, чтобы вышеописанное работало, если мне не нужно создавать класс для каждого элемента в коллекции.

 System.ComponentModel.DataAnnotations
 System.Xml.Serialization

Заранее большое спасибо.

1 Ответ

0 голосов
/ 04 февраля 2019

Поскольку вы не упомянули, какой метод сериализации xml вы используете, трудно сказать, но вам, вероятно, следует использовать DataContractSerializer , чтобы включить атрибуты DataContract.Чтобы использовать CollectionDataContractAttribute, у вас также должен быть класс коллекции, в который вы поместили указанный атрибут, как в этом примере

...