我有某种类型的对象,让我们说Foo
,看起来像:
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>
使用XmlDeserializer
使用以下代码尝试将该xml反序列化为List时,我做错了什么?
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 .
答案 0 :(得分:3)
根元素不匹配。有办法将它传递给XmlSerializer的构造函数,但IMO最好的办法是创建一个包装类:
[XmlRoot("root")]
public class FooWrapper {
[XmlElement("foo")]
public List<Foo> Items {get;set;}
}
并将此类型传递给XmlSerializer。