25
Velneo vDevelop
Scripts
Lenguajes
JavaScript
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.

Funciones

Constructor
Retorno
Función
VXmlWriter
VXmlWriter( VRegisterList registerList )
Inicialización
Retorno
Funció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
Retorno
Función
Boolean
writeFile( String szPath )
String
De información
Retorno
Funció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

1
////////////////////////////////////////////////////////////
2
// Exportar una lista de registros a xml
3
4
// Se importa la clase para usar sus funciones
5
importClass( "VQuery" );
6
importClass( "VXmlWriter" );
7
8
// Se crea el objeto búsqueda
9
var bus = new VQuery( theRoot );
10
bus.setQuery( "vbaseUsuariosApp/USR_GRP_NOM" );
11
12
// Se ejecuta la búsqueda
13
if ( bus.exec() )
14
{
15
// Se crea el objeto XML con la lista de registros de entrada
16
var xml = new VXmlWriter( bus.result() );
17
18
// Se fija el tipo de documento
19
xml.setDocType( "vXML" );
20
21
// Se añade como etiqueta de documento, el nombre de la tabla
22
xml.addInitialTag( "USR_GRP" );
23
24
// Se añade la etiqueta de registro
25
xml.setRowTag( "row" );
26
27
// Se añaden los campos de la tabla
28
xml.addField( "Código", "ID" );
29
xml.addField( "Nombre", "NAME" );
30
xml.addField( "Usuario alta", "ALT_USR.NAME" );
31
32
// Grabar el fichero en disco
33
xml.writeFile( theApp.rootPath() + "/USR_GRP" + ".xml" );
34
}
35
36
// Se muestra un mensaje confirmando la exportación
37
alert( "Se han exportado satisfactoriamente " + bus.result().size() + " grupos de usuarios", "Información" );
Copied!

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

1
////////////////////////////////////////////////////////////
2
// Exportar a XML todos los campos de los registros buscados en una tabla
3
//
4
// Este script es ejecutado desde otro proceso que le pasa la búsqueda a ejecutar (Variable local BUS)
5
// Una vez ejecutada la búsqueda se exportan todos los registros encontrados en la búsqueda
6
// Se exportan todos los campos de la tabla
7
8
// Se importa la clase para usar sus funciones
9
importClass( "VQuery" );
10
importClass( "VXmlWriter" );
11
12
// Se crea el objeto búsqueda
13
var bus = new VQuery( theRoot );
14
bus.setQuery( theRoot.varToString( "BUS" ) );
15
16
// Se ejecuta la búsqueda
17
if ( bus.exec() )
18
{
19
// Se obtiene el VRegisterList de la búsqueda
20
var lista = bus.result();
21
22
// Se crea el objeto VTableInfo para obtener la información de la tabla
23
var ti = lista.tableInfo();
24
25
// Se crea el objeto XML con la lista de registros de entrada
26
var xml = new VXmlWriter( lista );
27
28
// Se añade como etiqueta de documento, el nombre de la tabla
29
xml.addInitialTag( ti.id() );
30
31
// Se añade la etiqueta de registro
32
xml.setRowTag( "row" );
33
34
// Se recorren los campos y se añaden las columnas al XML
35
for ( col=0; col < ti.fieldCount(); ++col )
36
{
37
xml.addField( ti.fieldName( col ), ti.fieldId( col ) );
38
}
39
40
// Grabar el fichero en disco
41
xml.writeFile( theApp.rootPath() + "/" + ti.id() + ".xml" );
42
}
43
44
// Se muestra un mensaje confirmando la exportación
45
alert( "Se han exportado satisfactoriamente " + lista.size() + "; " + ti.name(), "Información" );
Copied!
Última actualización 2yr ago