Conseguir los elementos por tipo de malformación en HTML
-
19-09-2019 - |
Pregunta
¿Cuál es la forma más fácil en Java para recuperar todos los elementos con un determinado tipo en una página HTML con formato incorrecto? Por eso quiero hacer algo como esto:
public static void main(String[] args) {
// Read in an HTML file from disk
// Retrieve all INPUT elements regardless of whether the HTML is well-formed
// Loop through all elements and retrieve their ids if they exist for the element
}
Solución
HtmlCleaner es sin duda uno de los mejores programas de análisis de HTML que hay cuando se trata de lidiar con (un poco) HTML con formato incorrecto.
La documentación es aquí con algunos ejemplos de código; que está básicamente buscar método getElementsByName()
.
Tome un vistazo a Comparación de los analizadores HTML Java si estás pensando en otras bibliotecas.
Otros consejos
He tenido éxito usando tagsoup . Aquí está una breve descripción de su página de inicio:
Esta es la página principal de TagSoup, un analizador SAX-compatible escrita en Java que, en lugar de analizar bien formado o XML válido, analiza HTML tal como se encuentra en la naturaleza: pobre, desagradable y brutal, aunque muy a menudo lejos de ser corto. TagSoup está diseñado para personas que tienen que procesar este material utilizando una cierta apariencia de un diseño racional aplicación. Al proporcionar una interfaz SAX, que permite a las herramientas XML estándar que deben aplicarse a incluso el peor HTML. TagSoup también incluye un procesador de línea de comandos que lee los archivos HTML y puede generar ya sea HTML o XML limpia bien formada que es una aproximación cercana a XHTML.
JTidy .
JTidy es un puerto de Java de HTML Tidy, una comprobador de sintaxis HTML y bastante impresora. Al igual que su primo no Java, JTidy se puede utilizar como una herramienta para limpieza incorrecto HTML y defectuoso. Además, JTidy proporciona un DOM interfaz con el documento que se siendo procesado, lo que efectivamente te hace capaz de utilizar JTidy como DOM analizador de HTML en el mundo real.