gpt4 book ai didi

Java (Android) Html 表解析到数据库 (SQLite)

转载 作者:行者123 更新时间:2023-12-02 08:16:25 25 4
gpt4 key购买 nike

我已经进行了很多天的搜索,试图找到以下问题的答案。我对 Java 和 Android 编程还很陌生,主要是从复制粘贴编辑场景中学习的,但尽管有一些教程,但我在这方面确实遇到了困难。

我已经尝试过使用 htmlcleaner 作为我的解析器,我确信我已经接近了,但只是无法做到这一点。

我正在尝试将网站上的值表(即 <TR>TD,TD,TD,TD</TR> )解析为标准 Android SQLite 数据库。因此表的每一行都是数据库中的一行。

理论上这应该很简单,但我被不同的方法所困扰,并且不理解一种简单干净的方法。

有人可以帮忙吗?请不要向我指出 htmlparser 或非特定教程,因为我已经在这些领域工作了很长时间,无法管理解决方案。

我试图解析的表值在这里:Teams and values

编辑:::

好吧,我想我已经接近使用 JSoup 了。我可以从 [td] 标记中获取一个值并将其放入字符串中。但是,如何调整以下代码,以便为每个“for”迭代每一行(即每个 [tr] 内),并将每个 [td] 值放入字符串数组中?

public class GetTable extends Activity {

static String hello;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.testlayout);
try {
populateTexts();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

private void populateTexts() throws IOException{
String url = "http://news.bbc.co.uk/mobile/bbc_sport/rugby/competition/ru100/table/index.shtml?context=cps_ukfs";

Document doc = Jsoup.connect(url).get();
Elements links = doc.select("td");


for (Element link : links) {
hello = link.text();
TextView twittertext10 = (TextView)findViewById(R.id.testView1);
twittertext10.setText(hello);
}
}
}

最佳答案

解决方法如下。我将数据库输出到 ListView 只是为了显示我拥有所有正确的数据。

public class GetTable extends ListActivity {

static String team;
static int played;
static int won;
static int drew;
static int points;
private TableDbAdapter mDbHelper;
static int position = 0;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.testlayout);
mDbHelper = new TableDbAdapter(this);
mDbHelper.open();
mDbHelper.clearTable();
try {
populateTexts();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
populateList();
}

private void populateTexts() throws IOException{
String url = "http://news.bbc.co.uk/mobile/bbc_sport/rugby/competition/ru100/table/index.shtml? context=cps_ukfs";

Document doc = Jsoup.connect(url).get();

//

Elements rows = doc.select("table[class=tblResults teamTable] tr:gt(0):lt(13)");

String s[] = new String[rows.size()];
for(Element row : rows){
s[0] = row.child(0).text();
s[1] = row.child(1).text();
s[2] = row.child(2).text();
s[3] = row.child(3).text();
s[4] = row.child(4).text();

team = s[0];
if (s[1] !=""){
played = Integer.parseInt(s[1]);}
else played = 0;
if (s[2] !=""){
won = Integer.parseInt(s[2]);}
else won = 0;
if (s[3] !=""){
drew = Integer.parseInt(s[3]);}
else drew = 0;
if (s[4] !=""){
points = Integer.parseInt(s[4]);}
else points = 0;

position ++;


// sql insert
mDbHelper.createTableRow(position, team, played, won, drew, points);



}
}

private void populateList() {
// Get all of the fixtures from the database and create the item list
Cursor c = mDbHelper.fetchWholeTable();
startManagingCursor(c);

String[] from = new String[] { TableDbAdapter.KEY_POSITION, TableDbAdapter.KEY_TEAM, TableDbAdapter.KEY_PLAYED, TableDbAdapter.KEY_WINS, TableDbAdapter.KEY_DREW, TableDbAdapter.KEY_POINTS};
int[] to = new int[] { R.id.fixtextlist, R.id.fixtextlistkotime, R.id.fixtextlisthome, R.id.fixtextlisths, R.id.fixtextlistas, R.id.fixtextlistaway};

// Now create an array adapter and set it to display using our row
SimpleCursorAdapter table =
new SimpleCursorAdapter(this, R.layout.fixlist_item, c, from, to);
setListAdapter(table);




}
}

关于Java (Android) Html 表解析到数据库 (SQLite),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6325067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com