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
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.