Lista Musical


XML

<ListaMusical>
  <Grupo Id="1" Nombre="Beatles">
    <Cancion Id="1">Let it be</Cancion>
    <Cancion Id="2">Help</Cancion>
  </Grupo>
  <Grupo Id="2" Nombre="Adele">
    <Cancion Id="3">Someone like you</Cancion>
  </Grupo>
</ListaMusical>

Clase

[XmlRoot("ListaMusical")]
    public class ListaMusicalViewModel
    {
        
            [XmlRoot("Grupo")]
            public class Grupo_ListaMusicalViewModel
            {
                [XmlRoot("Cancion")]
                public class Cancion_ListaMusicalViewModel
                {
                    [XmlAttribute("Id")]
                    public string Id { get; set; }
                    [XmlText()]
                    public string Textoelemento { get; set; }
                }
                [XmlAttribute("Id")]
                public string Id { get; set; }
                [XmlAttribute("Nombre")]
                public string Nombre { get; set; }
                [XmlElement("Cancion")]
                public List ListadoCanciones { get; set; }
            }
            [XmlElement("Grupo")]
            public List Grupo { get; set; }
                
    }
            

Preguntas

Número de Grupos musicales:
2

Total Canciones:
3

Número de Canciones de los Beatles:
2

Primera canción de Adele:
Someone like you


¿Qué es y Cómo funciona?

Tenemos un XML representado en un textarea que ha sido deserializado en una clase con ayuda de dataannotations usando System.Xml.Serialization.

Con dicho modelo Razor ha podido responder con simples funciones lambda sin acceder al xml original.

 

Teoría

System.Xml.Serialization nos permite deserializar un xml en una clase siendo su gestión más optima.

La serialización/deserialización nos posibilita poder tomar instantáneas de un objeto en XML y así:

  • Grabarlo como XML
  • Enviarlo a un WCF.
  • Validarlo contra un esquema XSD
  • etc...

Personalmente perfiero una esrtructura JSON a un XML pero reconozco que los esquemas XSD son más precisos que los intentos en JSON (json-schema.org)

 

Configuración y Test

Se ha utilizado Visual Studio Express 2013 para Web y actualmente Visual Comunity 2015.
La programación se ha desarrollado con C#, Razor y acceso a Base de Datos por Entity Framework.

Las tablas mostradas en la aplicación se encuentran en un Microsoft® SQL Server® 2012 y actualmente en SQL de Azure

El alojamiento de las páginas se realizó en https://www.smarterasp.net con el plan .NET ADVANCE y actualmente se han movido a 2 Aplicaciones Web en Azure: una para este proyecto Web MVC y otra para un WCF usada en un ejemplo.

Se ha testeado con exito en diferentes navegadores y sistemas operativos, en pantallas de PC, tabletas y moviles.