Código del Ejercicio
La descarga de la página web desde la URL seleccionada se puede hacer de 2 formas, mediante el comando Velneo Get fichero de URL o usando la clase del API XmlHttpRequest.
Una vez tenemos el código HTML descargado en un fichero de la caché (en sysCacheClientPath + "/html_parseo.txt") todo el trabajo de cargar el código, parsear para obtener la lista de valores y generar el JSON, se realiza en el Visor HTML mediante un código plantilla javascript que tenemos en la variable CCODIGO_PARSEO.
La librería jQuery se puede descargar desde la página oficial. Incluimos la librería como un adjunto en el poyecto para que se copie en la caché.
Carga del código plantilla en el Visor HTML de parseo
// Carga el código HTML en el Visor de Parseo
var oVisorParseo = theRoot.dataView().control("CTR_PARSEO")
var cHTML = theRoot.varToString("CCODIGO_PARSEO")
oVisorParseo.setSourceCode(cHTML, "file:///" + theApp.clientCachePath())
// Deleganos los clicks en Velneo
oVisorParseo.setLinkDelegationPolicy(VCWebView.DelegateAllLinks)
Código plantilla que se ejecuta en el Visor HTML de parseo
<!doctype html>
<html>
<head>
<title>Parseo Página con JQuery</title>
<script src='jquery-2.1.4.min.js'></script>
<script>
// CONSULTAS JQUERY *******************************************
$(document).ready(function(){
// Usamos el método Load() del objeto jQuery Ajax que carga un fichero de disco
// Establecemos los valores por defecto para las consultas Ajax con el método Load()
// La lectura del fichero es Síncrona para que el Script espere a la carga del código en el Div #cargar
// La Cache = false para que se vuelva a leer el fichero de disco en lugar de la caché
$.ajaxSetup({async:false, cache:false})
// Obtenemos el código HTML que vamos a analizar y al mismo tiempo hacemos la Selección del elemento table.carData
var cError
// Selección que aplicamos en el método Load()
var cElementoHTML = 'table.carData'
$('#cargar').load('html_parseo.txt ' + cElementoHTML, function(responseTxt, statusTxt, xhr){
if(statusTxt == 'success') {
// alert('La carga síncrona del fichero se ha realizado correctamente');
cError = null
}
if(statusTxt == 'error') {
cError = xhr.status + '-> ' + xhr.statusText
}
});
// El código HTML cargado se ha colocado en el div #cargar
// alert($('#cargar').html())
var codigo = $('#cargar')
if (cError || codigo.html().length == 0) {
alert('Error cargando el fichero html_parseo.txt:\\n' + cError)
}
else {
// Objeto JSON con cada fila de la tabla { CAMPO: nombre de campo, DATO: dato obtenido }
var oFicha = {}
oFicha.CAMPO = ''
oFicha.DATO = ''
// Array JSON con las filas de la tabla
var oFichasLista = []
// Tenemos el elemento establecido en cElementoHTML
var oTabla = codigo.find(cElementoHTML)
if (oTabla) {
// Lista de campos con los valores en las filas de la tabla
var oFilas = oTabla.eq(0).find('tbody tr')
oFilas.each(function(i){
oFicha = {}
oFicha.CAMPO = $(this).find('td').eq(0).text()
oFicha.DATO = $(this).find('td').eq(1).text()
oFichasLista.push(oFicha)
})
// Insertamos el JSON obtenido en el div resultado
$('h3').append(' ' + oFichasLista.length)
$('#resultado').append('<pre>' + JSON.stringify(oFichasLista,null,' ') + '</pre>')
// alert(JSON.stringify(oFichasLista))
setTimeout(function() {
// Envía un evento Click a Velneo
var a = document.createElement('a');
// En Velneo 21 (con Chromium) es necesario el esquema para que funcione el click
a.href = "file:///" + encodeURI(JSON.stringify(oFichasLista));
a.click();
document.body.removeChild(a);
}
, 100);
}
}
})
// ************************************************************
</script>
<div id='cargar' style='display: none;'></div>
<h3 style='font: 20px arial bold, sans-serif;'>Líneas obtenidas de la Tabla:</h3>
<p style='font: 12px arial, sans-serif;'>El elemento div #cargar (no visible) contiene la tabla HTML que ha sido parseada por jQuery.<br>
A continuación aparece el JSON obtenido de las filas de la tabla y que pasamos a Velneo.</p>
<div id='resultado'></div>
</body>
</html>
Created with the Personal Edition of HelpNDoc: Free EPub and documentation generator