보통 안드로이드 에서는 Xmlpullparser 를 이용해서 웹페이지의 내용을 파싱 해오는 게 가장 효육적이라고 한다.
하지만, 그 웹페이지에서 RSS를 지원해야 쉽게 이용이 가능하다.
RSS를 지원하지 않는다면 Xmlpullparser 를 이용해서 파싱을 해 오는 것은 아무래도 힘들어 보인다.
이에 RSS를 지원하지 않는 사이트를 파싱해올 수 있는 DOM 이나 Jericho를 사용할 수 있는데,
보통 Jericho를 많이 이용하는것 같다.
위의 소스를 이용하여 파싱해 올 수 있지만, jericho.jar 파일을 import 시켜서 사용해야 하며,
jericho는 원래 한글을 지원하지 않지만,
java에서 한글을 지원하기 때문에 소스를 간단히 수정해 준다면, 이를 이용 가능하다.
source = new Source(new URL(sourceUrlString));
부분을
URL sUrl= new URL(sourceUrlString);
InputStream is = sUrl.openStream();
Source source=new Source(new InputStreamReader(is,"euc-kr"));
물론 "euc-kr" 부분은 사이트의 "
charset" 에 맞추어 변경해 주어야 한다. ex>
UTF-8,
KSC5601..... etc
그렇다면 jericho.jar 파일을 임포트 시키는 방식은 어떠할까?
보통 안드로이드 개발로는 Eclipse를 사용한다. Eclipse 에 Libraries 를 등록하는 절차에 대해 설명한다면,
--------------------------------------------------------------------------------------------
먼저 Project에 라이브러리를 import시킨다.
즉, Project -> import -> General -> File System -> jar파일등록하면 Project에 해당 Library가 추가된다.
다음으로는 해당 Library를 Project에서 사용할 수 있도록 설정을 해주어야 한다.
Project선택 후
Properties(Alt + Enter) -> Java Build Path -> Libraries Tab -> Add JARs -> JAR파일 선택
또는 import 시키지 않고 외부에서 Library를 가져올 수 도 있다.
Project선택 후
Properties(Alt + Enter) -> Java Build Path -> Libraries Tab -> Add External JARs -> JAR파일 선택
*. 추가 확인 사항
Jericho HTML Parser를 설치한 후에 java 소스 상에서 아래와 같이 사용할 경우.
Source source = null;
source = new Source(new URL(sourceUrlString));
Source Import시 두가지 중 import net.htmlparser.jericho.Source; 를 설정해 주어야 한다
---------------------- 출처 : http://dodo4989.tistory.com/106 ----------------------------------
------------------------------------------소스코드-------------------------------------------
String yourUrl = "http://www.naver.com/";
tv = (TextView) findViewById(R.id.tv1);
tv.setText(getHtmltoText(yourUrl));
public String getHtmltoText(String sourceUrlString) {
Source source = null;
String content = null;
try {
// HTML을 읽을 URL
URL sUrl= new URL(sourceUrlString);
InputStream is = sUrl.openStream();
source=new Source(new InputStreamReader(is,"UTF-8"));
// 처음부터 끝까지 순차적으로 구문 분석.
source.fullSequentialParse();
// HTML MarkUp에서 Text Contents만 가져와서 String으로 변환.
content = source.getTextExtractor().toString();
} catch (Exception e) {
e.printStackTrace();
}
return content;
}