lunes, 22 de febrero de 2016

Leer XML desde un String

Bueno el objetivo de esta entrada es permitir leer un XML desde un string (que puede ser obtenido mediante un Archivo o un Web Service, que no será tratado en la misma) y mediante el uso del Data type XMLReader procesarlo para que pueda ser usado en un SDT y todas las ventajas que este ofrece. Sin más que acotar empecemos.

Se declaran las variables:
  • mensaje de tipo Varchar(200) o LongVarChar (2M) dependiendo del tamaño del texto. Esta variable contendrá el XML en forma de cadena de caracteres o de String.
  • XMLReader de tipo XMLReader. Este tipo de objeto permitirá crear un lector para el procesamiento del formato XML. click aquí para más información.
  • XML de tipo Varchar(200) o LongVarChar (2M) dependiendo del tamaño del texto, esta variable almacenará el XML crudo como String o cadena.
  • SDT de tipo del SDT especialmente construido para guardar la información del XML.

Y mediante el código fuente a explicar:

Básicamente en las variables anteriores ya se definió el funcionamiento del siguiente código salvó la merecida explicación de las funciones Read() que permite procesar la información desde el string hacia el objeto XMLReader; y la función ReadRawXML() que permite enviar el contenido del lector como XML hacia una variable, para que esta pueda ser usada en el llenado del SDT con la función FromXML().

&XMLReader.OpenFromString(&mensaje)
&XMLReader.Read()
&XML = &XMLReader.ReadRawXML()
&SDT.FromXml(&XML)

5 comentarios:

  1. Muchas gracias por la información, claro y conciso.

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. Hola, buenas noche o tardes...
    Necesito desarrollar una aplicación donde en un WBP, debo ingresar a un carpeta y seleccionar archivos con extensión".xml" y tratarlos con el tipo de dato XMLReader.
    El tema es que no sé como tener en el WBP, un acceso a la carpeta donde se guardan los archivos del "Input File" o algo así. Puesto que en los ejemplos que encontré; &varXMLRead.Open(&RutaArchivo) por ejemplo ya tiene definida la ruta y el nombre del Archivo.
    La idea es que yo pueda acceder a esa ruta poder abrir la carpeta donde están los ".xml" seleccionarlo y descargar en una Grilla o SDT el contenido del mismo. Tratándolo con el Tipo de Datos XMLReader utilizando sus método y propiedades.
    La verdad estoy tratando de buscarle la vuelta pero no puedo lograrlo.
    Si es posible me de una guía se lo voy a agradecer.
    Muchas gracias un saludo cordial.

    ResponderEliminar
    Respuestas
    1. Buenos días,

      No sé si ya lograste resolver el problema que tenías o tal vez llegue muy tarde mi respuesta.

      Lo que podrías hacer es usar el tipo de objeto Directory de Genexus (setear el path respectivo) y mediante la función o método GetFiles obtener los archivos que necesitas procesar usando un bucle.

      Saludos,

      Eliminar