情况:我一直在尝试解析网址并检索正文标记之间的信息并在Android文本视图中进行设置。
问题:出现问题和/或丢失......
代码:
package jsouptutorial.androidbegin.com.jsouptutorial;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.TextNode;
import org.jsoup.select.Elements;
import java.io.File;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textOut = (TextView)findViewById(R.id.rootTxtView);
//------------------Something went wrong here-------------------------------
Document doc;
try {
//doc = Jsoup.connect("https://stackoverflow.com/questions/45311629/android-jsoup-parsing-url-for-all-body-text").get();
doc = Jsoup.parse(new File("https://stackoverflow.com/questions/45311629/android-jsoup-parsing-url-for-all-body-text"), "UTF-8");
Elements desc = doc.select("a.body");
textOut.setText((CharSequence) desc); //Setting textView to a String
} catch (IOException e) {
e.printStackTrace();
}
//--------------------------------------------------------------------
}
}
答案 0 :(得分:1)
你有几个问题:
首先,您尝试从URL创建File
对象,这将抛出IOException
。您想要使用JSoup方法从URL
Document doc = Jsoup.connect("https://stackoverflow.com/questions/45311629/android-jsoup-parsing-url-for-all-body-text").get();
下一个问题是您的元素选择doc.select("a.body")
。这是尝试用一类主体选择所有锚标签<a>
- 并且没有。要让身体只使用doc.body()
同样正如cricket_007所提到的那样,你正在尝试来自主线程的网络请求,所以它会抛出一个NetworkOnMainThreadException
最简单的方法,就是在AsyncTask中运行它,see this question for details.