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>
.
Можно ли задавать имена разных типов, не создавая класс упаковки?
Спасибо
Вы можете использовать атрибуты 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.
Привет
Возможно, вам стоит взглянуть на XmlAttributeOverrides