如何快速将XML反序列化为类型?

MRF*_*ius 0 c# xml linq xml-deserialization

假设我将此XML作为字符串:

<calles>
  <calle>
   <nombre>CALLAO AV.</nombre>
   <altura>1500</altura>
   <longitud>-58.3918617027</longitud>
   <latitud>-34.5916734896</latitud>
   <barrio>Recoleta</barrio>
  </calle>
 </calles>
Run Code Online (Sandbox Code Playgroud)

并且创建了我创建的Type I来映射XML:

public class Ubicacion
{
    public string Latitud { get; set; }
    public string Longitud { get; set; }
    public string Nombre { get; set; }
    public string Altura { get; set; }
    public string Barrio { get; set; }

    public Ubicacion() { }
}
Run Code Online (Sandbox Code Playgroud)

我需要获取该XML文件并使用这些值创建一个对象...

有人知道快速的方法吗?用C#?我一直在尝试这个,但根本不工作......

XElement dir = XElement.Parse(text);

Ubicacion informacion = from d in dir.Elements("calle").
        select new Ubicacion
        {
           Longitud = d.Element("longitud").Value,
           Latitud = d.Element("latitud").Value,
           Altura = d.Element("altura").Value,
           Nombre = d.Element("nombre").Value,
           Barrio = d.Element("barrio").Value,
        };
return informacion.Cast<Ubicacion>();
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Ste*_*ard 5

你试过这个吗?

 XElement dir = XElement.Parse(text); 

        var informacion = from d in dir.Elements("calle"). 
                          select new Ubicacion 
                          { 
                              Longitud = d.Element("longitud").Value, 
                              Latitud = d.Element("latitud").Value, 
                              Altura = d.Element("altura").Value, 
                              Nombre = d.Element("nombre").Value, 
                              Barrio = d.Element("barrio").Value, 
                          }.ToList();
Run Code Online (Sandbox Code Playgroud)

请记住,在遍历它之前不会执行LINQ查询.该.ToList()扩展方法会为你做的.然后它将产生一个List<Ubicacion>集合.

  • 不应该是`List <Ubication> informacion = from ...`? (2认同)