List <Int> XML-сериализация

2
List<int> testList = new List<int>();
testList.Add(1);
testList.Add(2);
testList.Add(3);

XmlSerializer xs = new XmlSerializer(typeof(List<int>));

Этот код (частичный) создает корень по умолчанию node <ArrayOfInts> и каждый node: <int>.

Можно ли задавать имена разных типов, не создавая класс упаковки?

Спасибо

Теги:

2 ответа

5

Вы можете использовать атрибуты XmlArray и XMLArrayItem вместе в верхней части объявления переменной. Затем XmlSerializer учитывает эти атрибуты при запуске сериализации определенного объекта. Позвольте мне привести пример с вашим кодом;

Вы должны определить свой общий список с этими атрибутами.

public class democlass
{

    [XmlArray("testList")]
    [XmlArrayItem("customitem")]
    public List<int> testList {get;set;}
}

Тогда, Вы можете добавить значения в свой список

    static void Main(string[] args)
    {
        democlass d = new democlass();
        d.testList = new List<int>();
        d.testList.Add(1);
        d.testList.Add(2);
        d.testList.Add(3);

И сериализуйте его. Вы увидите этот вывод.

<democlass>
    <testList>
        <customitem>1</customitem>
        <customitem>2</customitem>
        <customitem>3</customitem>
    </testList>
</democlass>

Вот оно.

Надеюсь, это поможет.

Примечание. Магия не указана в атрибутах XmlArray и XmlArrayItem, вы можете найти более подробную информацию о MSDN.

Привет

0

Возможно, вам стоит взглянуть на XmlAttributeOverrides

Ещё вопросы

Сообщество Overcoder
Наверх
Меню