La mejor solución que 'Encontré fue utilizar cyberneko para analizar su cadena y hacer algo de manejo de eventos SAX "inteligente".
cyberneko analizará el código HTML, incluso si no es válido, que es el caso de la gran mayoría del HTML que es probable que encuentre en la naturaleza.
Si se registra una costumbre ContentHandler
que esencialmente ignora todos menos los character
eventos y simplemente anexar los que un constructor de cadena, que obtendrá una buena primera aproximación, con un defecto molesto: las palabras separadas por un elemento de bloque va a terminar concatenado (for<br/>example
=>forexample
).
Una mejor solución es obtener una lista de todos los elementos de bloque, y tener su ContentHandler
escuchar startElement
eventos. Si el elemento es de bloque uno, solo agregue un carácter de espacio a su creador de cadenas.
Tenga en cuenta que si bien esto parece funcionar bien, puede que no sea perfecto para su caso de uso. <br/>
no se convierte, por ejemplo, en un salto de línea. Sin embargo, no debería ser demasiado trabajo agregar esto si es necesario.
estoy usando su solución en este momento y parece que funciona. Tuve que ajustar mi String a la etiqueta para que funcione incluso con la cadena "Hi name". Muchas gracias. – kajo
Prefiero usar 'scala.xml.parsing.XhtmlParser' para analizar el HTML. Mejor oportunidad de analizarlo correctamente. –