마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

jsoup 을 이용해 html 파싱을 하고 있습니다. (소스 첨부)

0 추천
현재.. 파싱하려는 html 은 구조는 다음과 같습니다. 
 
<table cellspacing="0" cellpadding="2" width="100%" class="schedule" border="0" bgColor="#9c9a9c" >
<tr align="center" bgcolor="#4E6815" class="style31" height=22>
<td width="63">1</td>
<td width="62">2</td>
<td width="130">3</td>
<td width="42">4</td>
<td width="42">5/td>
<td width="42">6</td>
<td width="44">7</td>
<td width="44">8</td>
<td width="44">9</td>
<td width="44">10</td>
<td width="130">11</td>
<td width="60">12</td>
</tr>
 
tr을 이용하여  td 값들을 가져오는데,
 
td값이 12개 /3개  12개 /3개/ 12개/ 3개 이런식으로 반복됩니다.
 
무조건 12개를 채우기 위해 검색하다보니 noSearch가 뜨는데,
 
각 카운트에 맞게 뽑아오려고 lengh, count, size 를 찾아봤지만 없네요..
 
임의로 소스상에서 갯수를 정해주기보다 가져오는 값의 td 값에 따라 for를 놀리려는데 어떻게 설정해주면 될까요?
 
 
파싱을다음과 같이 합니다.
 
class가 schedule인 table을 찾아서 그 안에 있는 tr을 모두 가져오고..
tr 안에 있는 td값을 items의 갯수만큼 돌려 가져와 매칭합니다.
td값이 고정적으로 12개면 문제가 안되는데
12개 3개 12개 3개 12개 3개 이런식으로 반복되다보니.. 예외를 해준다고 해도 안먹네요.
 
어떻게 처리를 하면 좋을까요?
 
 
String res = new String(super.handleResponse(response).getBytes("8859_1"), "euc-kr");
Document doc = Jsoup.parse(res);
Elements rows = doc.select("table.schedule tr");
 
String[] items = new String[] { "TD1", "TD2", "TD3", "TD4", "TD5", "TD6", "TD7", "TD8", "TD9", "TD10", "TD11", "TD12"};
for (Element row : rows) {
Iterator<Element> iterElem = row.getElementsByTag("td").iterator();
 
StringBuilder builder = new StringBuilder();
for (String item : items) {
builder.append(item + ": " + iterElem.next().text() + "   \t");
}
System.out.println(builder.toString());
}
 
return res;
 
 
개발자초심 (21,220 포인트) 님이 2014년 7월 20일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...