Usando Querypath con Drupal

June 18, 2021
En el siguiente artículo les conversaré un poco de como usar Querypath con Drupal. Querypath es una librería de PHP que permite manipular data HTML y XML. Con esto quiero decir que podemos extraer información de un archivo HTML o XML o inyectar data a estos archivos. Para más información pueden entrar a Querypath. Esto lo hacemos usando el API de Querypath con selectores de CSS, para más información pueden entrar al API de Querypath. Al tener esto claro, para empezar a trabajar con qp() debemos primero inicializar la librería, lo hacemos inicializando la librería en nuestro código: Si estamos trabajando con Drupal, podemos hacerlo con el módulo de Querypath que su función es hacer la conexión entre la librería y Drupal, lo que nos permite usar el API de Querypath en cualquier parte de nuestro proyecto. Al mismo tiempo hace que otros módulos contribuidos que tienen integraciones con Querypath permitan conectarse de manera estandarizada a la librería.También tiene un submódulo de de cache con querypath que nos va a permitir realizar nuestras interacciones (extraer o inyectar data) con Querypath de una manera más rápida. El módulo lo pueden encontrar en Querypath Drupal. Hay integraciones de Querypath con módulos de Drupal, como el caso de Feeds, tenemos el módulo Feeds Querypath Parser, el cual en base a un source de html o xml podemos tomar data y crear nuestras consultas de CSS para luego importarlo en entidades/nodos. Actualmente estamos trabajando en un proyecto en el cual tenemos que tomar data ("scrap data)" de archivos en formato XBRL, tuvimos que crear toda la lógica para poder realizar las consultas entre los nexos de los distintos archivos en base al estandar de la estructura de un reporte o taxonmía XBRL. Desarrollamos un módulo para importar taxonomías y y otro para importar reportes, también creamos otro módulo de complemento para dichos módulos que nos permite importar reportes masivos mediante busquedas de archivos usando el cron de Drupal. Explico una parte del código del módulo de importación de reportes XBRL: $xlink_value); //realizamos una busqueda en nuestro reporte .xbrl en busqueda de un xlink que sea igual a nuestra taxonomía foreach (qp($file_uri, $term_xlink) as $item) { //discriminamos si nuestro reporte a importar en el context es de tipo instant o es un reporte con startdate y end date if(!$item->attr('contextRef')==$instant && !preg_match('/STARTLABEL/',strtoupper($xlink_term_item->$preferred_value))){ //asignamos a nuestro array la data encontrada if(is_numeric($item->text())){ array_push($term_data, array( 'label' => $xlink_term_item->$xlink_value, 'amount' => $item->text() ) ); } else{ array_push($term_data, array( 'label' => $xlink_term_item->$xlink_value, 'string' => $item->text() ) ); } } } ?> Una vez importada la data en Drupal, ya podemos modelar la data como deseemos. Les recomiendo que prueben Querypath, ya que es muy funcional el uso de esta librería.