У меня есть объект некоторого типа, скажем Foo
, глядя, как:Как десериализации XML в списке <T>
public class Foo
{
[XmlElement("id")]
public string Id {get; set;}
[XmlElement("name")]
public string Name {get; set;}
}
Также я XML:
<root>
<foo>
<id>1</id>
<name>name_1</name>
</foo>
<foo>
<id>2</id>
<name>name_2</name>
</foo>
</root>
Что я делаю неправильно, пытаясь десериализовать этот xml в List с помощью XmlDeserializer
со следующим кодом?
var list = new List<Foo>();
var serializer = new XmlSerializer(typeof(List<Foo>));
using (var reader = new StringReader(xml))
{
list = (List<Foo>)serializer.Deserialize(reader); //error here
}
Получение исключение:
System.InvalidOperationException
<root xmlns=''> unexprected .
«некоторая ошибка отражения» - не могли бы вы уточнить? В общем, вы должны использовать XmlSerializer для десериализации XML, который также был * сгенерирован * с XmlSerializer. (Или, по крайней мере, это значительно более вероятно, чтобы работать ...) –
ну, удаленная спецификация типа из атрибута XmlElement и ошибка исчезла. XML создается в базе данных sql – Sergio
Я быстро проверил сериализацию экземпляра вашего класса; тип (int) вызывает ошибку отражения. Он работает с typeof (string). –