24 junio, 2007

Serialización Xml

Este formato es basado en XML y es recomendado cuando el objeto será des-serializado en diferentes plataformas o cuando va a ser trasportado por la red siempre y cuando no se requiera serializar miembros privados. Este formato brinda una gran interoperabilidad y es muy fácil de comprender.

'Persona.vb

Public Class Persona

Public Nombre As String

Public Apellido As String

Public Edad As Integer

Public Sub New()

MyBase.New()

End Sub

Public Sub New(ByVal _nombre As String, ByVal _apellido As String, ByVal _edad As String)

Nombre = _nombre

Apellido = _apellido

Edad = _edad

End Sub

End Class

'Serialize.vb

Imports System.IO

Imports System.Runtime.Serialization

Imports System.Xml.Serialization

Module Module1

Sub Main()

Dim Manuel As New Persona("Manuel", "Salas", 30)

Dim archivo As New FileStream("c:\temp\f_persona.xml", FileMode.Create)

Dim formateador As New XmlSerializer(GetType(Persona))

formateador.Serialize(archivo, Manuel)

archivo.Close()

End Sub

End Module

Como podemos observar es muy similar a las serializaciones anteriores, básicamente seguimos los mismos tres pasos:

  1. Instanciamos un FileStream para almacenar el objeto serializado.
  2. Instanciamos un Formateador para serializar el objeto.
  3. Serializamos el objeto llamando al método serialize del formateador.

Para des-serializar un objeto seguimos los mismos pasos de manera inversa:

  1. Instanciamos un FileStream para leer el objeto serializado.
  2. Instanciamos un Formateador para des-serializar el objeto.
  3. Des-serializamos el objeto llamando al método deserialize del formateador.

Veamos como des-serializar el objeto que serializamos en el fragmento de código anterior:

'Persona.vb

Public Class Persona

Public Nombre As String

Public Apellido As String

Public Edad As Integer

Public Sub New()

MyBase.New()

End Sub

Public Sub New(ByVal _nombre As String, ByVal _apellido As String, ByVal _edad As String)

Nombre = _nombre

Apellido = _apellido

Edad = _edad

End Sub

End Class

'Deserialize.vb

Imports System.IO

Imports System.Runtime.Serialization

Imports System.Xml.Serialization

Module Module1

Sub Main()

Dim Manuel As New Persona

Dim archivo As New FileStream("c:\temp\f_persona.xml", FileMode.Open)

Dim formateador As New XmlSerializer(GetType(Persona))

Manuel = formateador.Deserialize(archivo)

archivo.Close()

Console.WriteLine("Nombre ={0}, Apellido = {1}, Edad = {2}", Manuel.Nombre, Manuel.Apellido, Manuel.Edad)

Console.ReadKey()

End Sub

End Module

4 comentarios:

Unknown dijo...

HOla Alejandro yo lo que necesito hacer es esto mira que esa etiqueta ponga los puntos enmedio de la palabra cfdi y Addenda para quedar asi , de ahi los campos que le quiera hacer.

Unknown dijo...

HOla Alejandro yo lo que necesito hacer es esto mira que esa etiqueta ponga los puntos enmedio de la palabra cfdi y Addenda para quedar asi , de ahi los campos que le quiera hacer.

Unknown dijo...

Hola amigo no consigo crear esta etiqueta de la siguiente forma, todo lo que hago es crear un xml serializado pero como podria hacer le para serializar de esta forma observa:

28888
10



500000





5221.62
00.00




Ya que este esta valdiado por sat y lo demas, como podria hacerse eso?
Saludos....

Unknown dijo...

Hola amigo no consigo crear esta etiqueta de la siguiente forma, todo lo que hago es crear un xml serializado pero como podria hacer le para serializar de esta forma observa:



28888
10



500000





5221.62
00.00




Ya que este esta valdiado por sat y lo demas, como podria hacerse eso?
Saludos....