Подтвердить что ты не робот

Как мне заставить XmlSerializer не сериализовать теги контейнера списка?

У меня есть простой граф объектов, который я хотел бы сериализовать, я не смог найти решение этой проблемы. Вот он:

   [XmlRoot]
    public partial class MyData
    {

        private List<MyDatum> itemsField;

        public MyData()
        {
            this.anyAttrField = new List<System.Xml.XmlAttribute>();
            this.itemsField = new List<MyDatum>();
        }

        [XmlElement(Type = typeof(MyDatum))]
        public List<MyDatum> Items
        {
            get
            {
                return this.itemsField;
            }
            set
            {
                this.itemsField = value;
            }
        }
    }

В результате создается следующий XML:

<MyData>
    <Items>
        <MyDatum/>
        <MyDatum/>
        ...
    </items>
</MyData>

Я хотел бы удалить тег контейнера "Items", чтобы создать это вместо:

<MyData>
    <MyDatum/>
    <MyDatum/>
    ...
</MyData>

Я пробовал всевозможные решения, но не могу найти решение.

4b9b3361

Ответ 1

Укажите имя элемента в атрибуте [XmlElement]:

[XmlElement("MyDatum", Type = typeof(MyDatum))]
public List<MyDatum> Items {
    // ...
}

В соответствии с этой статьей в MSDN это приведет к удалению элемента оболочки вокруг сериализованных элементов.