2011-06-12 2 views
0

나는 다음과 같은 문제에 대한 해답을 찾으려고 며칠 동안 많은 것을 수색했다. 나는 자바와 안드로이드 프로그래밍에 익숙하지 않고 주로 복사 - 붙여 넣기 편집 시나리오에서 배웠다.하지만 몇 가지 튜토리얼이 있음에도 불구하고이 튜토리얼은 정말 어려움을 겪고있다.자바 (안드로이드) Html 테이블 (데이터베이스) (SQLite)

나는 파서로 htmlcleaner를 시도했으며, 나는 가깝지만 확실하지 않다.이 권리를 얻는다.

웹 사이트의 값 표 (예 : <TR>TD,TD,TD,TD</TR>)를 표준 Android SQLite 데이터베이스로 구문 분석하려고합니다. 따라서 테이블의 각 행은 db의 행이됩니다.

이론적으로 이것은 매우 간단해야하지만 나는 다른 방법으로 눈이 내리고 그걸하는 간단한 방법을 이해하지 못하고 있습니다.

아무도 도와 줄 수 있습니까? 제발 내가 htmlparser 또는 비 특정 튜토리얼을 가리 키지 마십시오. 왜냐하면 저는 이것들을 여러 해 동안 사용해 왔기 때문에 솔루션을 관리 할 수 ​​없기 때문입니다.

내가 구문 분석하려고 테이블 값은 현재 위치 : Teams and values

편집 :::

확인을 나는 점점 가까이 JSoup를 사용하고 생각합니다. [td] 태그 내에서 값을 가져 와서 문자열에 넣을 수 있습니다. 그러나 다음 코드를 적용하여 각 행 (즉 각 [tr] 내)이 'for'에 대해 반복되고 각 [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); 
    } 
    } 
} 
+0

어디에서 더 구체적으로 문제가 있습니까? 문제가있는 부분을 나타내는 코드를 보여주십시오. 나는 개인적으로 그것을 이해할 수 없다. – Snicolas

+0

죄송합니다. 질문을 복잡하게하지 않고 코드를 제공하기가 어렵습니다. 제 문제는 올바른 코드를 찾을 수 없다는 것입니다. 간단한 용어로 링크의 테이블 (팀 이름, 게임, 포인트 등)에서 데이터를 가져 와서 Android SQLite 데이터베이스를 채우려고합니다. 따라서 테이블의 각 행은 SQLite 테이블의 각 행과 동일합니다. – gloscherrybomb

+0

iCal 파일에서 성공적으로 구문 분석을 수행했지만 실제로 html 테이블을 반복하고 db를 채우는 데 어려움을 겪고 있습니다. 나는 htmlcleaner를 시도했지만 데이터베이스를 채우거나 재귀 적으로 결과로 문자열을 채우는 방법을 보여주는 좋은 자습서를 찾을 수 없다. 그들은 모두 목록을 채우는 것처럼 보입니다. 미리 감사드립니다. – gloscherrybomb

답변

2

해결책은 다음과 같습니다. 나는 모든 올바른 데이터를 가지고 있다는 것을 보여주기 위해 데이터베이스를리스트 뷰로 출력한다.

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); 




     } 
} 
0

당신은 아마 당신의 테이블 데이터를 구문 분석 SAX 또는 다른 XML 파서를 사용하여 가장 운이 것, 그럼 거기에서 당신은 테이블을 만들고 데이터를 삽입 할 SQLIteDatabaseHelper 클래스를 사용합니다. 좀 더 구체적인 질문이 있으시면보다 구체적인 답변을 드릴 것입니다 :-)

+0

감사합니다. 다소 느슨한 질문에 대해 사과드립니다. 나는 그것을 지금 풀고 나의 해결책으로 편집했다. – gloscherrybomb

관련 문제