Nuevo en Symfony 4.3: Mejoras en el componente DomCrawler

Obtener el nombre del nodo

El método extract() devuelve el atributo indicado y/o el valor de cada nodo de una lista de nodos. El atributo especial _text es el que permite obtener el valor del nodo. En Symfony 4.3 hemos añadido otro atributo especial llamado _name que permite obtener su nombre (es decir, la etiqueta HTML):

$attributes = $crawler->filterXPath('//body/*')
    // devuelve el nombre, contenido y clase CSS de cada elemento de la página
    ->extract(['_text', '_name', 'class']);

Esta funcionalidad fue contribuida por Andrey Helldar en el pull request #29127.

Valores por defecto para text() y html()

Cuando un nodo está vacío y llamas al método text() o html(), el resultado es una excepción de tipo \InvalidArgumentException con un mensaje de error que seguro que has visto más de una vez: "The current node list is empty.".

En Symfony 4.3 puedes pasar un argumento a estos métodos para devolverlo cuando el nodo esté vacío, así que actúa como valor por defecto del nodo:

// devuelve una cadena vacía en vez de lanzar una excepción
$title = $crawler->filter('aside h3')->text('');
 
// devuelve un contenido HTML por defecto en vez de lanzar una excepción
$userProfile = $crawler->filter('.user-profile')->html('<b>Usuario anónimo</b>');

Esta funcionalidad fue contribuida por Roberto Espinoza en el pull request #28581.

Fuente: New in Symfony 4.3: DomCrawler improvements

Comentarios

Publicada el

28 de marzo de 2019

Etiquetas

Proyectos Symfony destacados

La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.