Ir al contenido principal

Convertir Object a XML


El error que te puedes llegar a encontrar al convertir un Objeto en Xml, puede ser este "carácter no válido. Línea 1, posición 1". En ocasiones por cuestiones de estandarización de las comunicaciones entre puntos se nos facilita un XSD que comprende una estructura de comunicaciones.

Para  su utilización desde código serializamos el esquema XSD que se nos facilite con la siguiente herramienta:

   - ruta de instalación\NETFX X.X Tools\xsd.exe NombreFichero.xsd /classes /language:vb /namespace:NombreEspacioNombres

Esto nos convertirá nuestro esquema XSD en una clase de vb.

En el programa utilizaremos esta clase de vb para rellenar de datos el Objeto que luego convertiremos en XML.

Y para finalizar llamamos a nuestra función de la siguiente manera:

System.Xml.XmlDocument.LoadXml(ObjetoToXML(ObjetoXsd, "ISO-8859-1"))

Public Function ObjetoToXML(ByVal objeto As Object, ByVal codificacion As String) As String
   Dim writer As XmlWriter
   Dim settings As New XmlWriterSettings()
   Dim ms As New System.IO.MemoryStream
   Dim xml As String
   Dim serial As XmlSerializer
   serial = New XmlSerializer(objeto.GetType)

   'CREAMOS EL WRITER
   settings.Indent = True
   settings.IndentChars = vbTab
   settings.Encoding = Encoding.GetEncoding(codificacion)
   writer = XmlWriter.Create(ms, settings)

   serial.Serialize(writer, objeto)

   1.- SE OBTIENE EL XML
   xml = Encoding.GetEncoding(codificacion).GetString(ms.GetBuffer())

   2.- ELIMINAMOS LOS RESTOS DEL PRINCIPIO SOBRE TODO SI LA CODIFICACION ES ISO
   xml = xml.Substring(xml.IndexOf(Convert.ToChar(60)))

   3.- ELIMINAMOS LOS RESTOS DEL FINAL DEL XML
   xml = xml.Substring(0, (xml.LastIndexOf(Convert.ToChar(62)) + 1))

   Return xml.Trim

End Function

La solución al problema que planteábamos arriba la obtenemos en los puntos marcados 2 y 3, eliminando todo lo que nos sobre del Xml, que de normal suelen ser unos caracteres extraños que vienen del Buffer.

Como comentario decir que este error con la codificación ISO no se producía en todas las versiones del Microsoft .NET Framework, pero si a partir de la 4.0.

Espero que te sirva de ayuda.

Comentarios

Entradas populares de este blog

Gestionar los permisos de directorio con vb.net

Hola a tod@s !!! El otro día me tope con un error a la hora de guardar un fichero en un directorio en el que en principio si debería tener acceso, ya que es el directorio de la aplicación. Estaba intentando guardar el archivo de esta manera: Dim numAleatorio As New Random(CInt(Date.Now.Ticks And Integer.MaxValue)) ficheroTemporal = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) & "\TEMP\" & _ System.Convert.ToString(numAleatorio.Next) & "_" & _ System.Convert.ToString(numAleatorio.Next) & ".tmp" Dim fs As IO.FileStream fs = New IO.FileStream(ficheroTemporal, IO.FileMode.Append) Esta instrucción crea en el directorio de la aplicación en una carpeta llamada TEMP un archivo temporal por la numeración que tiene tipo a 1248632552_1248632552.tmp, pero puede dar error por la siguientes causas:

Backup MySql servidor compartido

Buenas a tod@s !!! Hoy se me a ocurrido dejaros este post sobre como hacer copias de seguridad de nuestras bases de datos de MySql en servidores en la nube como por ejemplo 1and1. Esta función estará metida en un fichero SH que ejecutaremos con una tarea CRON en nuestro servidor linux. Tener en cuenta que tenéis que tener permisos para ejecutar SSH, estos permisos solo se suelen dar en los contratos mas avanzados de los servidores compartidos. #!/bin/bash # ## ------ VARIABLES DE CONFIGURACION ----##

Maquetando con html5 y css3

Hola a tod@s, Ya hace mucho tiempo que no publicaba nada. Hoy realizando limpieza en mi maquina me he encontrado con mi primer diseño html5 responsive, os dejo el ejemplo de código tanto del archivo HTML5 como de las buenas practicas en CSS3. Archivo HTML <!DOCTYPE html> <html lang="es">   <head>     <title>Mi primera p&aacute;gina en HTML5</title>     <meta charset="utf-8" /> <!-- Establecemos la codificación -->     <meta description="Aqui va la descripcion del sitio" />     <!-- MEDIA tipo de dispositivo all para todos mobiles y PCs-->     <link rel="stylesheet" type="text/css" href="css/estilos.css">   </head>   <body>     <h1>Bienvenidos a 3etrade</h1>     < !-- CABECERA -->       <header>          &lt;header&gt;       </header>