在Android中解析HTML

Dan*_*ykt 80 html parsing android

我试图从一个网页解析Android中的HTML,并且由于网页形成不好,我得到了SAXException.

有没有办法解析Android中的HTML?

iba*_*alf 68

我刚遇到这个问题.我尝试了一些方法,但决定使用JSoup.jar大约是132k,这有点大,但是如果你下载源代码并取出一些你不会使用的方法,那么它就不那么大了.
=>关于它的好处是它将处理格式错误的HTML

这是他们网站的一个很好的例子.

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();
}
Run Code Online (Sandbox Code Playgroud)

  • 小心:JSoup非常慢. (3认同)

Mat*_*ias 54

你尝试过使用Html.fromHtml(源码)吗?

我认为这个类在源代码质量方面相当自由(它在内部使用TagSoup,它的设计考虑了真实的,糟糕的HTML).它不支持所有HTML标记,但它确实附带了一个处理程序,您可以实现它对它不理解的标记做出反应.


Edd*_*ieB 21

String tmpHtml = "<html>a whole bunch of html stuff</html>";
String htmlTextStr = Html.fromHtml(tmpHtml).toString();
Run Code Online (Sandbox Code Playgroud)

  • 注意:在从 `Html.fromHtml(str)` 返回的 `Spanned` 对象上调用 `toString()` 将使许多 `HTML` 标签不起作用(包括 `&lt;i&gt;` `&lt;u&gt;` ` &lt;b&gt;`)。因此,如果您要设置文本视图,请执行以下操作:`myTextView.setText(Html.fromHtml(str))` (2认同)