Класс сериализации, украшенный XmlRoot, ошибка при использовании в List
Когда я пытаюсь сериализовать элемент класса типа Test, он дает XML с корневым элементом как "тестирование", которое устанавливается с помощью XmlRoot.
Но когда я пытаюсь сериализовать элемент класса Elems, тестовый элемент сериализуется с корневым элементом "Тест" вместо "тестирование".
[XmlRoot("testing")]
public class Test
{
}
public class Elems
{
public List<Test> how = new List<Test>();
public Elems()
{
how.Add(new Test());
how.Add(new Test());
how.Add(new Test());
}
}
Это выход, когда элементы сериализуются,
<Elems xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" x
mlns:xsd="http://www.w3.org/2001/XMLSchema">
<how>
<Test />
<Test />
<Test />
</how>
</Elems>
вместо этого это то, что мне нужно.
<Elems xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" x
mlns:xsd="http://www.w3.org/2001/XMLSchema">
<how>
<testing />
<testing />
<testing />
</how>
</Elems>
Спасибо
1 ответ
Решение
Попробуйте вот так:
public class Test { }
public class Elems
{
public Elems()
{
How = new List<Test>();
How.Add(new Test());
How.Add(new Test());
How.Add(new Test());
}
[XmlArray("how")]
[XmlArrayItem("testing")]
public List<Test> How { get; set; }
}
class Program
{
static void Main()
{
var elems = new Elems();
var serializer = new XmlSerializer(elems.GetType());
serializer.Serialize(Console.Out, elems);
}
}