jueves, 11 de agosto de 2016

Modificar un tag específico de un Archivo XML en Genexus

Bueno entre idas y venidas las necesidades apremian, por hoy modificar un tag específico de un Archivo XML.

Ahora si manos a la obra.

Primero obtener el contenido del tag que necesitamos modificar. Para ello leyendo un poco del Data Type XMLReader notamos que podemos usar la función ReadType para obtener el contenido del tag especificado y mediante la función Value obtener su valor.

&XMLReader.Open(&filePath)
&XMLReader.ReadType(1,"tag")
&tagValue = &XMLReader.Value
&XMLReader.Close()

En segundo lugar necesitamos obtener el contenido del archivo mediante el DataType File (más información del manejo de archivos aquí) y almacenar su contenido en un Varchar, en mi caso en la variable de nombre &XML.

&File.Source = &filePath
&File.OpenRead()
&XML = &File.ReadAllText()
&File.Close()

Tercero, armar dos Strings o Varchar, uno para búsqueda y otro para reemplazo dentro del String o Varchar obtenido anteriormente, que usaremos con la función StrReplace.

&search = "<tag>" + &tagValue + "</tag>"
&replace = "<tag>"+ &newTagValue.ToString().Trim()+"</tag>"
&XMLModified = StrReplace(&XML, &search, &replace)

Por último sobreescribimos el archivo XML con el nuevo contenido.

&File.OpenWrite(&filePath)
&File.WriteAllText(&XMLModified)
&File.Close()

PD: Para control de errores

sobre el XMLReader

&XMLReader.ErrCode
&XMLReader.ErrDescription

sobre el Data Type File

&File.ErrCode
&File.ErrDescription


1 comentario: