Question

Quelle est la meilleure façon en Java pour récupérer tous les éléments avec un certain type dans une page HTML malformé? Donc, je veux faire quelque chose comme ceci:

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
}
Était-ce utile?

La solution

HtmlCleaner est sans doute l'un des meilleurs parseurs HTML là-bas quand il s'agit de traiter (un peu) HTML malformé.

La documentation est ici avec quelques exemples de code; vous êtes à la recherche essentiellement pour la méthode de getElementsByName().

Jetez un oeil à Comparaison des parseurs Java HTML si vous envisagez d'autres bibliothèques.

Autres conseils

J'ai eu du succès en utilisant tagsoup . Voici une brève description de leur page d'accueil:

  

Ceci est la page d'accueil de TagSoup, un analyseur compatible SAX écrit en Java qui, au lieu de l'analyse syntaxique XML bien formé ou valide, parse HTML comme il se trouve dans la nature: pauvre, méchant et brutal, bien que très souvent loin d'être court. TagSoup est conçu pour les personnes qui doivent traiter ce genre de choses en utilisant un semblant de conception d'une application rationnelle. En fournissant une interface SAX, il permet des outils XML standard à appliquer à même le pire HTML. TagSoup comprend également un processeur de ligne de commande qui lit les fichiers HTML et peut générer soit propre HTML ou XML bien formé qui est une approximation proche de XHTML.

Vérifier JTidy .

  

JTidy est un port Java de HTML Tidy, un   HTML vérificateur de syntaxe et jolie   imprimante. Comme son cousin non-Java,   JTidy peut être utilisé comme un outil pour   nettoyage HTML malformé et défectueux.   En outre, JTidy fournit des DOM   interface avec le document qui est   en cours de traitement, qui a effectivement   vous rend capable d'utiliser JTidy comme DOM   analyseur pour HTML dans le monde réel.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top