Android可以通过Jsoup和Html.fromHtml方法来解析HTML。
1.Jsoup:
Jsoup是一种Java HTML解析器,可以将HTML文档转换为DOM(文档对象模型)。Android可以通过导入Jsoup库来使用它。下面是一个示例,演示如何使用Jsoup从HTML字符串中提取文本:
```
String html = "
Lorem ipsum
";Document document = Jsoup.parse(html);
String text = document.text();
```
2.Html.fromHtml:
Android framework提供了一个可以将HTML格式的文字转化为Spanned格式文字的类Html。 Html.fromHtml()方法可以解析出HTML标签,并返回富文本对象Spanned对象,如下所示:
```
String html = "bold italic";
Spanned spanned = Html.fromHtml(html);
```
该方法还可以接受一个ImageGetter对象,以获取HTML文本中的图像,并返回包含图像的Spanned对象,如下所示:
```
String html = "";
Spanned spanned = Html.fromHtml(html, new ImageGetter() {
@Override
public Drawable getDrawable(String source) {
try {
InputStream stream = (InputStream) new URL(source).getContent();
Drawable drawable = Drawable.createFromStream(stream, "");
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
stream.close();
return drawable;
} catch (Exception e) {
return null;
}
}
}, null);
```
这里的ImageGetter只是一个匿名类,它通过从URL加载图像并返回Drawable对象将HTML中的图像转换为Spanned对象。在实际应用中,应该使用异步图像加载器。
需要注意的是从Android N (API level 24) 开始,Html.fromHtml()方法不会识别一些HTML标记。 在这种情况下,可以使用HtmlCompat.fromHtml()。