J'essaie d'analyser le HTML dans Android à partir d'une page web, et comme la page web n'est pas bien formée, j'obtiens SAXException
.
Existe-t-il un moyen d'analyser le HTML dans Android ?
J'essaie d'analyser le HTML dans Android à partir d'une page web, et comme la page web n'est pas bien formée, j'obtiens SAXException
.
Existe-t-il un moyen d'analyser le HTML dans Android ?
Je viens de rencontrer ce problème. J'ai essayé plusieurs choses, mais j'ai fini par utiliser JSoup . Le jar fait environ 132k, ce qui est un peu gros, mais si vous téléchargez la source et enlevez certaines des méthodes que vous n'utiliserez pas, alors il n'est pas si gros.
\=> Ce qui est bien, c'est qu'il gère le HTML mal formé.
Voici un bon exemple tiré de leur site.
File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
//http://jsoup.org/cookbook/input/load-document-from-url
//Document doc = Jsoup.connect("http://example.com/").get();
Element content = doc.getElementById("content");
Elements links = content.getElementsByTag("a");
for (Element link : links) {
String linkHref = link.attr("href");
String linkText = link.text();
}
Vous pourriez essayer d'inclure le jar complet, et exécuter ProGuard sur votre application dans votre version de production pour enlever le code inutilisé.
Avez-vous essayé d'utiliser Html.fromHtml(source) ?
Je pense que cette classe est assez libérale en ce qui concerne la qualité de la source (elle utilise TagSoup en interne, qui a été conçu en tenant compte du mauvais HTML dans la vie réelle). Il ne supporte pas toutes les balises HTML, mais il est livré avec un gestionnaire que vous pouvez implémenter pour réagir aux balises qu'il ne comprend pas.
Attention s'il vous plaît. cela va "suspendre tous les fils". Je suis confronté à ce problème lorsque je reçois un json contenant du texte au format html. Il n'y avait pas de problème pour afficher le texte html à juste titre mais après avoir utilisé html.fromhtml(), je suis confronté à ce problème.
Il existe de nombreux Analyseurs HTML Java . Je ne peux pas dire s'ils fonctionnent sur Android. J'ai vu des gens faire des expériences avec TagSoup, d'après d'autres messages publiés ici dans SO.
À titre d'information, l'appel toString()
sur le Spanned
retourné par Html.fromHtml(str)
fera de nombreux HTML
ne fonctionnent pas (y compris <i>
<u>
<b>
). Donc, si vous définissez une vue de texte, faites-le : myTextView.setText(Html.fromHtml(str))
@Sakiboy Tu as raison. En plus de cela, il y a beaucoup d'autres tags qui ne fonctionnent pas avec Html.fromHtml()
. Regardez ça stackoverflow.com/a/3150456/1987045
Vous pouvez peut-être utiliser WebView, mais comme vous pouvez le voir dans la documentation, WebView ne prend pas en charge le javascript et d'autres éléments comme les widgets par défaut.
http://developer.Android.com/reference/Android/webkit/WebView.html
Je pense que vous pouvez activer le javascript si vous en avez besoin.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Je soupçonne que la dépendance de Rhino rendra htmlunit infernal à compiler sur Android, mais vous pouvez essayer... De même, un autre analyseur HTML non strict tel que soup pourrait fonctionner.
0 votes
Je me demande si webkit peut être utilisé ici.