안드로이드 개발 질문/답변
(글 수 45,052)
public class faq extends Activity{
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> list2 = new ArrayList<String>();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.faq);
TextView tv = (TextView)findViewById(R.id.tv);
parsing1();
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(faq.this,android.R.layout.test_list_item,list);
ListView listView = (ListView)findViewById(R.id.list);
listView.setAdapter(arrayAdapter);
}
public String getURLtoText(String UrlString)
{
Source source = null;
String content = null;
try{
source = new Source(new URL("UrlString);
source.fullSequentialParse();
content = source.getTextExtractor().toString();
content = new String(content.getBytes(source.getEncoding()),"UTF-8");
}
catch(MalformedURLException e) {
e.printStackTrace();
}
catch(IOException e) {
e.printStackTrace();
}
return content;
}
public void parsing1(){
String parse = getURLtoText("게시판url 주소");
StringTokenizer st = new StringTokenizer(parse,"자르는 부분");
while(st.hasMoreTokens()){
StringTokenizer st1 = new StringTokenizer(st.nextToken(),"자르는 부분");
while(st1.hasMoreTokens())
list.add(st1.nextToken());
}
}
예를 들어서
웹상에서
공지
---------------------------------------------
가나다라마바사 안내 [2011-08-18]
카타파하 [2011-08-18]
...
...
----------------------------------------------
이런식으로 있다면
정보를 받아게 되면
공지 가나다라마바사 안내 [2011-08-18] 카타파하 [2011-08-18] ... ....
라 출력이 됩니다. 따라서 위에 소스로 파싱하는것은 힘들다고 생각이 됩니다 ㅠ
몇일간 고민도 하고 소스도 이리저리 스스로 해보았지만 혼자 맨땅에 헤딩이라 또 물어 보게 됬습니다
우선 제가 하려는 부분이 웹에서 공지사항에 들어가면 공지사항의 제목이 나열되어있고
해당 공지를 터치했을때 그 공지를 띄어주는 부분입니다
우선 위에 소스는 간단하게 파싱할 주소를 날려서 서버로부터 html 소스를 받고
문자열만 출력되게 합니다 그 문자들을 list 라는 배열에 넣는데 문자만 출력이 되기때문에 잘라서 넣는것도 한계가 있었습니다
(이전에는 문자만 출력이 되는게 아니라 전체 소스를 받아서 노가다식으로 시도를 해 보았습니다)
어떤식으로해야 될까요 선배님들 조언 부탁드립니다 ㅠ




음.. xml 파싱이 아닌 html 파싱을 하시려는거 같네요..
html파싱의 경우 jericho 파서라고 오픈라이브러리가 있습니다. 저도 게시판 파싱때문에 고생좀 했는데.. 일단 제리코 파서 써서 되긴 되더군요..
제리코 파서는 모든 태그에 대한 정보 얻어와서 태그의 내용을 받아올수 있는데요..
게시판의 경우 보통 테이블 태그를 이용해 <Table> <Tr> <Td> </Td> </Tr> </Table> 형태로 되어있기 때문에 어떻게 써보니 게시판 타이틀의 경우 번호, 제목, 글쓴이, 날짜, 클릭시 게시판내용 URL을 각각 파싱해올수 있더군요.
파싱한 데이터를 커스텀 리스트뷰를 이용해 게시판 형태로 뿌려주면 될듯합니다.