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

Descargas totales de Symfony

2.735.527.475

Ver descargas en tiempo real

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