¡Bienvenid@ a La bloguera.net! Iniciar sesión | ÚNETE a la web | Ayuda
Jugando con la información de los XML´s ---> xsd.exe (Parte 2)

En el post anterior comentamos cómo deserializar un fichero XML para obtener una serie de instancias de unas clases que lo representan. 

Ahora vamos a realizar lo contrario, a partir de una instancia de la clase Libro, vamos a generar un XML asociado que se ajusta al esquema.

 

Nos creamos un objeto de la clase libro y le añadimos la información del libro a través de las propiedades de la clase que se proporcionan. A continuación con creamos un fichero con la clase FileStream y posteriormente con la clase XmlSerializer serializamos el objeto de la clase Libro que nos hemos creado anteriormente.

 

 

static void Main(string[] args)

{

    Libro milibro = new Libro();

 

    milibro.precio = (double)30;

    milibro.precioSpecified = true;

    milibro.Titulo = "Los tres cerditos";

    milibro.Autores = new string[] {"Luis","Manolo","Laura" };

    milibro.Editorial = "MiEditorial";

 

    FileStream fs = new FileStream("prueba.xml", FileMode.Create);

    XmlSerializer xs = new XmlSerializer(typeof(Libro));

    xs.Serialize(fs, milibro);

    fs.Close();

}

Nota:  Si nos fijamos en la clase Libro que se ha generado podemos ver como para el atributo precio hay un atributo en la clase que representa al mismo y otro de tipo boleano asociado. Esto se debe a que para los elementos que pueden o no aparecer (minOccurs=0) o para el caso de los atributos, que nunca son obligatorios, debemos indicar si queremos que se serialicen o no. Para ello en este caso indicamos que precioSpecified=true.

 

El resultado del ejemplo anterior seria el siguiente documento XML:

 

<?xml version="1.0"?>

<Libro xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" precio="30">

 

  <Titulo>Los tres cerditos</Titulo>

  <Autores>Luis</Autores>

  <Autores>Manolo</Autores>

  <Autores>Laura</Autores>

  <Editorial>MiEditorial</Editorial>

</Libro>

 

Y esto ha sido todo para serializar y deserializar objetos en ficheros XML.

Posted: lunes, 06 de agosto de 2007 8:13 por Pedro

Comentarios

Floyd_11 ha opinado:

Master... este articulo estuvo muy bueno.. de hecho me salvo ya que estaba buscando algo parecido..

lo probe y funciona excelente... y lo hice con Xsd que contienen Includ y funciono todo ok.

pero tengo una consulta... ?

tengo la clase que Serializa.

y con eso consigo esto por ejemplo, ya que la clase está estructurada así.

<Usuarios>

<Usuario>Ricardo</Usuario>

<Rut>1</Rut>

<Dv>9</Dv>

</Usuarios>

pero que pasaría, lo cual va a ser así, si requiero esto

<Usuarios>

<Usuario>Ricardo</Usuario>

<Rut>1</Rut>

<Dv>9</Dv>

<Usuario>Freddy</Usuario>

<Rut>2</Rut>

<Dv>7</Dv>

<Usuario>Pepe</Usuario>

<Rut>3</Rut>

<Dv>7</Dv>

</Usuarios>

como genero otra instancia y esta que se agregue al mismo Xml. ??

# julio 21, 2008 22:31

Pedro ha opinado:

Hola Floyd. Perdona por no contestar antes. No había visto tu comentario.

Para realizar eso que necesitas solo tienes que generar una clase Usuarios que internamente tenga una lista de tipo Usuario, para ello necesitas tener otra clase llamada Usuario.

# diciembre 1, 2008 22:52
No se permiten comentarios de usuarios anónimos