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