Académique Documents
Professionnel Documents
Culture Documents
Unidades Instalación
Jerarquía de Dado que las herramientas de Internet y su XQuery-Engine consisten en un conjunto de unidades Pascal simples, no requieren
clases instalación. Sólo necesita extraer todos los archivos del paquete .zip y asegurarse de que FPC puede encontrar los archivos .pas.
Clases, Puede realizar una de las siguientes acciones para establecer las rutas:
Interfaces,
Objetos y Ponga esto en su fpc.cfgo˜/.fpc.cfg
Registros
-Fu <PATH> / data /
Tipos -Fu <PATH> / Internet /
-Fu <PATH> / sistema
Variables
(reemplace <PATH> con el directorio al que ha extraído todo)
Constantes
Establezca las rutas de búsqueda de su proyecto a los archivos extraídos. Los directorios importantes son datos /, Internet /
Funciones y y sistema /
Procedimientos
Instale el paquete internettools.lpk en Lazarus.
Identificadores
En Linux también es necesario instalar Synapse y OpenSSL devel. Para Android necesitas el SDK / NDK estándar de Android e
inicializa la referencia de JVM en bbjniutils . En la configuración predeterminada utiliza FLRE como biblioteca de expresiones
regulares, puede definir una USE_SOROKINS_REGEX para usar la unidad regexpr de Sorokin / FPC.
Las herramientas de Internet están estructuradas modularmente y puede activar diferentes funciones, dependiendo de qué
unidades están incluidas en la cláusula de unidad de su proyecto. Usted necesita uno de synapseinternetaccess ,
w32internetaccess o androidinternetaccess , por lo que sabe, que la biblioteca subyacente para utilizar para el acceso a Internet.
No es necesario utilizar nada de estas unidades, solo incluirlas en la cláusula unitaria ya las activa.
Empezando
La unidad más importante es xquery , que contiene el intérprete XPath / XQuery del que puede llamar a la mayoría de las otras
unidades.
utiliza xquery;
writeln (query ( 'doc ("http://example.org") // title' ) . toString);
utiliza xquery;
var v: IXQValue;
begin
para v en la consulta ( 'doc ("http://example.org") // a / @ href' ) do
writeln (v.toString);
final .
utiliza xquery;
var v: IXQValue;
begin
para v en la consulta ( 'doc ("http://example.org") // a / concat (., ":", @href)' ) do
writeln (v.toString);
final .
Los ejemplos utilizan la función XQuery docpara descargar la página HTML y codifican la URL en la llamada de consulta . A
menudo, es necesario consultar una página web que sólo se conoce en tiempo de ejecución. Para que pueda llamar a consulta
con variables adicionales en una matriz abierta, que se puso en $_1, $_2, ...:
utiliza xquery;
var v: IXQValue;
begin
para v en la consulta ( 'doc ($ _ 1) // a / concat (., ":", @href)' , [ 'http://example.org' ]) do
writeln (v.toString);
final .
O, alternativamente, no utilice la consulta en absoluto, pero almacene la url en un valor ixq, luego descargue y transforme ese
valor:
utiliza xquery;
var v: IXQValue;
empiece
por v en xqvalue ( 'http://example.org' ) . recuperar () . Mapa ( '// a / concat (,. ":", @href)' ) hacer
writeln (v.toString);
final .
También hay la unidad simpleinternet , que proporciona una función simpleinternet.process para ejecutar directamente una
consulta en una página web, es decir . Aunque esto es más sencillo para las consultas triviales, no generaliza bien y, por lo tanto,
está ahora obsoleto. process('http://example.org', '//a/concat(., ": ", @href)')
Los métodos de transformación IXQValue generalizan extremadamente bien a varias páginas. Por ejemplo, puede comenzar en
una página de búsqueda, rellenar un término de búsqueda en el campo de formulario "q", descargar todos los enlaces y obtener
el título de cada página a la que hace referencia un enlace:
utiliza xquery;
var v: IXQValue;
empiece
por v en xqvalue ( 'http://www.google.com' ) . recuperar ()
. map ( 'formulario (// formulario, {"q": $ _1})' , [ 'término de búsqueda' ]) . recuperar ()
. mapa ( '// a' ) . recuperar ()
. map ( '// title' ) hacer
http://www.benibela.de/documentation/internettools/ 1/3
13/9/2017 Visión de conjunto
writeln (v.toString);
final .
Las dos unidades más importantes son internetaccess y xquery . Internetaccess proporciona las funciones para descargar cosas y
xquery las funciones para entenderlas.
httpRequest se puede utilizar como una simple llamada de función y devuelve la página web como cadena:
utiliza internetaccess;
comenzar
writeln (httpRequest ( 'http://www.example.org' ));
final .
La función de 1 parámetro envía una petición GET, la función de 2 parámetros una petición POST. Las llamadas múltiples a las
funciones mantienen una sesión activa (es decir, cookies, referencias) y son seguras.
Si se utiliza TInternetAccess , cada objeto tiene su propia sesión. Sin embargo, no puede utilizar TInternetAccess en sí, y necesita
utilizar una de sus clases de implementación TSynapseInternetAccess , TW32InternetAccess o TAndroidInternetAccess . En la
unidad internetaccess existe una variable global defaultInternetAccessClass que debe establecerse en una de las clases de
implementación. A continuación, puede crear el objeto a partir de esta variable de clase, por lo que puede cambiar fácilmente
entre las implementaciones y elegir el más adecuado (Wininet se integra mejor con los sistemas Windows, ya que no requiere
openssl, pero la sinapsis independiente de la plataforma).
Procesamiento de datos
Hay varias formas de procesar un documento HTML / XML descargado.
Se implementa como una jerarquía de clases de procesamiento de datos, desde lenguajes de alto nivel hasta un tokenizador de
bajo nivel, donde cada nivel usa las cosas del nivel inferior. Sólo la interfaz de alto nivel es estable. Las clases de nivel inferior se
utilizan internamente para implementar las de nivel superior.
La plantilla es un archivo XML que contiene un conjunto de acciones. Cada acción es como un procedimiento que puede contener
estructuras de control como if y loop como elementos XML y también llamar a otras acciones. Por lo tanto, los elementos XML de
la plantilla son Turing-completos (aunque los cálculos reales deben realizarse con expresiones XPath / XQuery incluidas en la
plantilla). Las acciones también contienen listas de páginas web y patrones HTML. Todas las páginas web se descargan y luego el
patrón coincide con los patrones HTML, dando lugar a una lista de elementos HTML coincidentes o datos leídos de los elementos
almacenados en una lista / registro de cambios de variables. Estas variables son la salida de la plantilla, y enviar al lado de Pascal.
Si se utiliza como se pretende, toda la lógica del programa se mueve a la plantilla, y el programa Pascal sólo se utiliza para
mostrar su salida.
Toda la plantilla se puede cargar con la clase TMultipageTemplate y ser evaluada por la clase TMultipageTemplateReader .
Todas las demás funciones y métodos se pueden acceder desde el lenguaje interpretado. No todas las funciones están habilitadas
por defecto. Agregue las unidades xquery_json y xquery_utf8 a una cláusula uses de cualquier unidad para activar la
compatibilidad con JSONiq y UTF-8. Su presencia en la cláusula unitaria es suficiente para activarlos. Otros módulos están
disponibles en las unidades xquery_module_math (funciones matemáticas de XPath / XQuery 3.0) y xquery_module_file (módulo
de archivo EXPath). Se activan llamando a la función de registro de la unidad correspondiente.
La unidad extendedhtmlparser contiene un correlacionador de patrones XML / HTML. Un patrón es una versión simplificada y
anotada de los datos que deben analizarse. Para crear un patrón, toma el documento que desea procesar, elimine todas las cosas
sin importancia y marque las cosas de interés. La clase THtmlTemplateParser se utiliza para hacer coincidir el patrón con los datos
y devolver todos los coincidencias en un changelog variable. Incluir la unidad en una cláusula uses también registra el correlador
de patrones en el intérprete XQuery, por lo que puede llamar a la función de coincidencia de patrones de las expresiones XQuery
evaluadas. Y la otra manera alrededor del patrón puede también contener los expresones arbitrarios de XQuery.
Crea un árbol de TTreeElement-s a partir del texto del documento html (conoce estos árboles de DOM, pero este árbol no tiene
nada que ver con do (o) m).
También puede utilizar la clase TTreeParserDOM en la unidad simplexmltreeparserfpdom para importar un documento DOM leído
por el analizador fpc xml estándar
Simplemente divide un documento html en etiquetas y elementos de texto y llama a una función de devolución de llamada para
cada uno de los elementos.
Una función similar, parseXML , existe para los datos xml en la unidad simplexmlparser (trata el archivo xml como archivo html,
pero comprueba cosas como las instrucciones de procesamiento xml).
Otras cosas
http://www.benibela.de/documentation/internettools/ 2/3
13/9/2017 Visión de conjunto
La unidad autoupdate contiene la clase TAutoUpdater que puede buscar en línea una actualización disponible para la
arquitectura actual del sistema y luego descargarla / instalarla
La unidad bigdecimalmath contiene funciones para hacer cálculos con decimales de precisión arbitraria.
La unidad int65math contiene funciones para hacer cálculos con enteros de 65 bits.
La unidad bbutils contiene funciones de bajo nivel, que están muy por debajo del simplehtmlparser y deberían estar en el
fpc rtl, pero no lo son.
La unidad pastemplate implementa un lenguaje de plantilla muy simple para las unidades pascal (tal plantilla se utiliza
para generar bbutils )
http://www.benibela.de/documentation/internettools/ 3/3