Estoy usando el módulo Perl HTML::PullParser
. Noté que a veces divide un elemento de texto (hasta donde puedo decir) al azar.
Por ejemplo, si tengo un archivo html test.html
con el contenido de
... THE QUICK BROWN FOX ...
Y mi código perl se ve algo así como
my $html = HTML::PullParser->new(file => 'test.html', text => '"T", text'); while (my $token = $html->get_token) { print "$$token[1]\n"; }
Entonces a veces vuelvo
THE QUICK BROWN FOX # correctly parsed
Pero otras veces lo consigo
THE QUICK BROWN FOX
donde el elemento de texto se analiza en dos fichas separadas. Sin embargo, en otras ocasiones, dependiendo del otro contenido del archivo html, obtengo
THE QUICK BROWN FOX
donde el punto de ruptura es diferente Este comportamiento es extremadamente molesto. Y lo mejor que pude para aislar el problema. Parece que depende de la totalidad del archivo (es decir, si elimino el rest del archivo para dejar solo ese elemento, entonces está bien). Sin embargo, no puedo identificar qué parte del rest del archivo causó esto. ¿Se pregunta si alguien tuvo una experiencia similar y sabe cómo solucionar el problema? ¡¡Gracias!!
ACTUALIZACIÓN: la aparición de este comportamiento errante NO depende de una sola sección del código html en otra parte del archivo. Pude aislar dos secciones de códigos html antes de ese elemento de texto; cuando ambos están presentes, se produce este error. Pero cuando cualquiera de los dos está presente sin el otro, este problema desaparece … Estoy absolutamente confundido y molesto.
HTML :: PullParser es una subclase de HTML :: Parser. HTML :: Parser tiene un atributo de texto ininterrumpido que controla si distribuye eventos de texto lo antes posible, o si almacena el texto hasta que el analizador sepa que no habrá más texto. El valor predeterminado es generar nodos de texto tan pronto como sea posible. una llamada $p->unbroken_text(1)
debería hacer que esté en búfer 🙂