Vous êtes sur la page 1sur 3

13/9/2017 Visión de conjunto

Visión de Herramientas de Internet


conjunto

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.

Por ejemplo, esto escribirá el título de una página web:

utiliza xquery;
writeln (query ( 'doc ("http://example.org") // title' ) . toString);

Esto escribirá el destino de todos los enlaces allí:

utiliza xquery;
var v: IXQValue;
begin
para v en la consulta ( 'doc ("http://example.org") // a / @ href' ) do
writeln (v.toString);
final .

Y esto escribirá el destino y el nombre de todos los enlaces:

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.

Acceder a Internet / descargar cosas


La unidad primaria para acceder a Internet es la unidad internetaccess . Contiene las funciones httpRequest para las peticiones
HTTP de GET / POST, así como la clase base abstracta TInternetAccess que las implementa. (otros servicios del Internet como ftp /
smtp se podrían agregar en versiones futuras).

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.

Nivel trascendental: plantilla de varias páginas


En el nivel máximo más alto está la plantilla de varias páginas, pero como lenguaje de programación independiente está flotando
hasta ahora sobre las bibliotecas habituales, para pasar a la siguiente sección.

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 .

Alto nivel: XQuery / XPath - Procesamiento de expresiones y concordancia de patrones


La clase TXQueryEngine en la unidad xquery implementa un intérprete XQuery / XPath 3, interpretando lenguajes de
programación completos de Turing. La consulta de función se puede utilizar para evaluar una expresión, que devuelve los
resultados de la evaluación como IXQValue que se puede encadenar a través de una LINQ-como pipeline.

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.

Nivel medio: procesamiento de árbol / DOM


Para procesar un archivo html directamente en fpc, sin utilizar otro lenguaje interpretado, puede utilizar la clase TTreeParser en la
unidad simplehtmltreeparser .

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

Nivel bajo: interfaz tipo Lexer / SAX


En el nivel más bajo se encuentra la función parseHTML de la unidad simplehtmlparser .

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 )

Generado por PasDoc 0.14.0 .

http://www.benibela.de/documentation/internettools/ 3/3

Vous aimerez peut-être aussi