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:
- Instanciamos un FileStream para almacenar el objeto serializado.
- Instanciamos un Formateador para serializar el objeto.
- Serializamos el objeto llamando al método serialize del formateador.
Para des-serializar un objeto seguimos los mismos pasos de manera inversa:
- Instanciamos un FileStream para leer el objeto serializado.
- Instanciamos un Formateador para des-serializar el objeto.
- 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 |