我需要将以下xml反序列化为对象:
<animals>
<retrive>true</retrive>
<collection>
<cat>big</cat>
<dog>spot</dog>
<vetName>John Smith</vetName>
</collection>
</animals>
这是我尝试使用LINQ:
private Animal GetAnimalFromXML(string xml)
{
var tempdata = (from c in data.Elements("collection")
select new
{
Cat = (string)c.Element("cat"),
Dog = (string)c.Element("dog"),
VetName = (string)c.Element("vetName"),
}).First();
return new Animal(){
Cat = tempdata.Cat,
Dog = tempdata.Dog,
VetName = tempdata.VetName
}
}
我不喜欢我必须使用临时对象,所以我想知道是否可以解决这个问题并将此方法简化为单个查询?
谢谢, d。
答案 0 :(得分:7)
无需使用临时数据
private Animal GetAnimalFromXML(string xml)
{
return (from c in data.Elements("collection")
select new Animal()
{
Cat = (string)c.Element("cat"),
Dog = (string)c.Element("dog"),
VetName = (string)c.Element("vetName"),
}).First();
}