VXmlWriter

Nos permite generar un fichero XML con el contenido de una lista de registros.
Para empezar hay que importar la clase con importClass y construir el objeto VXmlWriter con new pasándole como parámetro un objeto de la clase VRegisterList.
El codec por defecto es "UTF-8". Para cambiarlo por ejemplo a UTF-16, llamar a la función setCodec( "UTF-16" ). Hay una lista de los codes disponibles más abajo.
Si no se usa la función setDocType(“mytype”) no se incluirá la cabecera opcional .
Por defecto el texto es formateado con saltos de linea e indentación. Para cancelarlo usar la función setAutoFormatting( false ). Con la función setAutoFormattingIndent( n ) ajustamos el numero de espacios o tabs de indentación. Si usamos valores positivos para n representan espacios y si son negativos tabs. Por defecto la indentación son 4 espacios.
Con la función addInitialTag( “tag”) le añadimos uno o varios tags, llamando varias veces a la función, que envuelven a los registros de la lista. Lo normal es usar una con el nombre de la tabla.
Con la función setRowTag( “tag” ) le decimos la etiqueta que ha de envolver a cada registro. Si no se usa por defecto es “row”.
A continuación con las funciones addField( “tagCol”, “IDCOMPUESTOCAMPO”) y addFormula( “tagCol”, “Formula” ) le añadimos tantas columnas como queramos por registro.
Y ya solo nos queda llamar a la función writeFile( “file.xml” ); para que nos lo escriba en disco.

Indice de funciones

Constructor

VXmlWriter VXmlWriter( VRegisterList registerList )

Inicialización

void addField( String szTag, String szIdCampoCompuesto )
void addFormula( String szTag, String szFormula )
void addInitialTag( String szTag )
void setAutoFormatting( Boolean bSet )
void setAutoFormattingIndent( Number nSpacesOrTabs )
void setCodec( String szCodecName )
void setDocType( String szType )
void setRowTag( String szTag )

De operaciones

Boolean writeFile( String szPath )
String writeToString()

De información

void codec()

Enumeraciones

Codec names
  • Apple Roman
  • Big5
  • Big5-HKSCS
  • CP949
  • EUC-JP
  • EUC-KR
  • GB18030-0
  • IBM 850
  • IBM 866
  • IBM 874
  • ISO 2022-JP
  • ISO 8859-1 to 10
  • ISO 8859-13 to 16
  • Iscii-Bng, Dev, Gjr, Knd, Mlm, Ori, Pnj, Tlg, and Tml
  • JIS X 0201
  • JIS X 0208
  • KOI8-R
  • KOI8-U
  • MuleLao-1
  • ROMAN8
  • Shift-JIS
  • TIS-620
  • TSCII
  • UTF-8
  • UTF-16
  • UTF-16BE
  • UTF-16LE
  • UTF-32
  • UTF-32BE
  • UTF-32LE
  • Windows-1250 to 1258
  • WINSAMI2

Documentación de funciones

Constructor

VXmlWriter VXmlWriter( VRegisterList registerList )

Crea una instancia de objeto de la clase VXmlWriter.
Parámetros:
  • registerList: objeto de lista de registros que alimentará el objeto.
Requiere importar la clase previamente: importClass("VXmlWriter").
Ejemplo:
var rss = new VXmlWriter(listaNoticias);

Inicialización

void addField( String szTag, String szIdCampoCompuesto )

Permite añadir tantas columnas como campos definamos.
Parámetros:
  • szTag: string que contiene la etiqueta de la columna (Por ejemplo el ID del campo).
  • szIdCampoCompuesto: string que contiene el identificador del campo de la tabla o de las relacionadas.

void addFormula( String szTag, String szFormula )

Permite añadir tantas columnas como fórmulas definamos.
Parámetros:
  • szTag: string que contiene la etiqueta de la columna.
  • szFormula: string que contiene la fórmula del valor.

void addInitialTag( String szTag )

Añade uno o varios tags, llamando varias veces a la función. Estos tags envuelven los registros de la lista. Lo normal es usar una etiqueta con el nombre de la tabla.
Parámetros:
  • szTag: string que contiene la etiqueta (normalmente el nombre de la tabla).

void setAutoFormatting( Boolean bSet )

Fija si se aplica o no formato automático. Por defecto el texto es formateado con saltos de linea e indentación. Por defecto la indentación son 4 espacios.
Parámetros:
  • bSet: booleano que indica el valor true para aplicar autoforma y false para cancelarlo.

void setAutoFormattingIndent( Number nSpacesOrTabs )

Ajusta el número de espacios o tabs de indentación.
Parámetros:
  • nSpacesOrTabs: number que indica el número de espacios o tabuladores. Si usamos valores positivos para nSpacesOrTabs representan espacios. Si usamos valores negativos para nSpacesOrTabs representan tabs.

void setCodec( String szCodecName )

Establece la codificación que se aplicará al fichero. Debemos aplicar esta función sobre el objeto VTextFile creado antes de escribir. Por defecto se crea con el codec UTF-8.
Parámetros:
  • szCodecName: string que indica el codec que se usará (literales entrecomillados). Ver enum de Codec names.

void setDocType( String szType )

Establece el tipo de documento.
Parámetros:
  • szType: string que identifica el tipo de documento XML.

void setRowTag( String szTag )

Establece la etiqueta que envuelve a cada registro. Si no se aplica esta función el valor por defecto de la etiqueta es "row".
Parámetros:
  • szTag: string que indica la etiqueta (por defecto "row").

Funciones de operaciones

Boolean writeFile( String szPath )

Graba en disco el fichero XML. Devuelve true si la generación ha finalizado correctamente.
Parámetros:
  • szPath: senda del fichero a generar.

String writeToString()

Devuelve el contenido XML generado.

Funciones de información

void codec()

Devuelve la codificación que se aplicará al fichero XML.

Ejemplos

1. Exportar una lista a xml

////////////////////////////////////////////////////////////
// Exportar una lista de registros a xml
// Se importa la clase para usar sus funciones
importClass( "VQuery" );
importClass( "VXmlWriter" );
// Se crea el objeto búsqueda
var bus = new VQuery( theRoot );
bus.setQuery( "vbaseUsuariosApp/USR_GRP_NOM" );
// Se ejecuta la búsqueda
if ( bus.exec() )
{
// Se crea el objeto XML con la lista de registros de entrada
var xml = new VXmlWriter( bus.result() );
// Se fija el tipo de documento
xml.setDocType( "vXML" );
// Se añade como etiqueta de documento, el nombre de la tabla
xml.addInitialTag( "USR_GRP" );
// Se añade la etiqueta de registro
xml.setRowTag( "row" );
// Se añaden los campos de la tabla
xml.addField( "Código", "ID" );
xml.addField( "Nombre", "NAME" );
xml.addField( "Usuario alta", "ALT_USR.NAME" );
// Grabar el fichero en disco
xml.writeFile( theApp.rootPath() + "/USR_GRP" + ".xml" );
}
// Se muestra un mensaje confirmando la exportación
alert( "Se han exportado satisfactoriamente " + bus.result().size() + " grupos de usuarios", "Información" );

2. Exportar una lista de cualquier tabla con todos sus campos

////////////////////////////////////////////////////////////
// Exportar a XML todos los campos de los registros buscados en una tabla
//
// Este script es ejecutado desde otro proceso que le pasa la búsqueda a ejecutar (Variable local BUS)
// Una vez ejecutada la búsqueda se exportan todos los registros encontrados en la búsqueda
// Se exportan todos los campos de la tabla
// Se importa la clase para usar sus funciones
importClass( "VQuery" );
importClass( "VXmlWriter" );
// Se crea el objeto búsqueda
var bus = new VQuery( theRoot );
bus.setQuery( theRoot.varToString( "BUS" ) );
// Se ejecuta la búsqueda
if ( bus.exec() )
{
// Se obtiene el VRegisterList de la búsqueda
var lista = bus.result();
// Se crea el objeto VTableInfo para obtener la información de la tabla
var ti = lista.tableInfo();
// Se crea el objeto XML con la lista de registros de entrada
var xml = new VXmlWriter( lista );
// Se añade como etiqueta de documento, el nombre de la tabla
xml.addInitialTag( ti.id() );
// Se añade la etiqueta de registro
xml.setRowTag( "row" );
// Se recorren los campos y se añaden las columnas al XML
for ( col=0; col < ti.fieldCount(); ++col )
{
xml.addField( ti.fieldName( col ), ti.fieldId( col ) );
}
// Grabar el fichero en disco
xml.writeFile( theApp.rootPath() + "/" + ti.id() + ".xml" );
}
// Se muestra un mensaje confirmando la exportación
alert( "Se han exportado satisfactoriamente " + lista.size() + "; " + ti.name(), "Información" );
Última actualización 8mo ago