我正在尝试从网页中解析android中的HTML,由于该网页的格式不正确,我得到了SAXException
。
有没有一种方法可以在Android中解析HTML?
我正在尝试从网页中解析android中的HTML,由于该网页的格式不正确,我得到了SAXException
。
有没有一种方法可以在Android中解析HTML?
Answers:
我刚遇到这个问题。我尝试了一些事情,但决定使用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();
}
您是否尝试过使用Html.fromHtml(source)?
我认为该类在源质量方面相当宽松(它在内部使用TagSoup,该类在设计时考虑到了现实生活中的不良HTML)。虽然它不支持所有HTML标记,但是它确实带有一个处理程序,您可以实现该处理程序以对不了解的标记进行反应。
String tmpHtml = "<html>a whole bunch of html stuff</html>";
String htmlTextStr = Html.fromHtml(tmpHtml).toString();
toString()
的Spanned
对象Html.fromHtml(str)
会使许多HTML
标签不起作用(包括<i>
<u>
<b>
)。因此,如果您要设置textview,请执行以下操作:myTextView.setText(Html.fromHtml(str))
我们都知道编程具有无限的可能性。有许多解决方案可解决一个问题,因此我认为上述所有解决方案都是完美的,可能对某人有所帮助,但对我而言,这可以节省我的时间。
所以代码像这样
private void getWebsite() {
new Thread(new Runnable() {
@Override
public void run() {
final StringBuilder builder = new StringBuilder();
try {
Document doc = Jsoup.connect("http://www.ssaurel.com/blog").get();
String title = doc.title();
Elements links = doc.select("a[href]");
builder.append(title).append("\n");
for (Element link : links) {
builder.append("\n").append("Link : ").append(link.attr("href"))
.append("\n").append("Text : ").append(link.text());
}
} catch (IOException e) {
builder.append("Error : ").append(e.getMessage()).append("\n");
}
runOnUiThread(new Runnable() {
@Override
public void run() {
result.setText(builder.toString());
}
});
}
}).start();
}
您只需要在onCreate Method
您的计算机中调用上述函数MainActivity
我希望这对你们也有帮助。
另请阅读Medium中的原始博客
也许您可以使用WebView,但是正如您在文档中所看到的,WebView默认情况下不支持javascript和诸如小部件之类的其他东西。
http://developer.android.com/reference/android/webkit/WebView.html
我认为您可以根据需要启用javascript。