기록차원에서 쓰는거라 반말 양해 바랍니다 ~
배경
배경
영화 평점 보는게 귀찮아서 만든 아이폰 어플인 movietrip은 사용자의 조회 데이터를
구글 앱스 엔진의 DB에 저장한다.
다양한 사람들이 검색한 영화를 저장만 하자니 아까워서 RSS로 뽑고 AIR로 뷰어를
만들었는데 나만 쓰는거 같아 영화 추천용 트위터 계정 생성~
앱스엔진의 cron을 사용하여 평점이 좋은 영화를 정기적으로
포스팅 하면 팔로우하는 사람들이 좋은 영화 추천받고 뭐 그럴것 같아 공부겸 만들기
시작 했는데 영화 상세정보 페이지 주소 140자 오바!
bit.ly의 주소줄이기 api로 해결점 획득(http://bit.ly/a/your_api_key)
그런데 자바의 XML파싱에서 어려움...
결국 성공은 했으나 기록에 필요성이 있어 간단히 정리.
필요한 jar 다운로드
http://www.jdom.org/dist/binary/
코드설명
파일스트림으로 xml을 로드할 수도, 외부 URL을 입력하여 xml파싱 할 수 있다.
(외부url 파싱하는걸로 코드 작성)
어려운 부분은 파싱처리에 대한 핸들러 설정이었다
굵게 표시한 부분
String url = "http://api.bit.ly/v3/shorten?login=fe7270&apiKey=키입력&longUrl=http://twitter.com/movietrip&format=xml";
XMLReader parser = new SAXParser();
XmlParseHandler xmlHandler = new XmlParseHandler();
parser.setContentHandler(xmlHandler);
//parser.setErrorHandler(xmlErrorHandler);
try {
parser.parse(url);
} catch (SAXException e) {
e.printStackTrace();
}
XmlParseHandler 는 ContentHandler를 인터페이스로 확장해서 생성한다.
그러면 구현해야할 함수들이 주르륵 생성이 되는데
각 메소드들에 대한 설명은 아래 참고링크를 확인
//파싱된 값들이 아래로 전달 된다. tempValue라는 변수에 값을 기억해두고
public void characters(char[] ch, int start, int length)throws SAXException {
tempValue = new String(ch,start,length);
}
//엘리먼트가 하나하나 처리될때 마다 호출되는 이 함수로 사용하고픈 qName이 왔을때
//가져다 쓴다.
public void endElement(String uri, String localName, String qName)throws SAXException
{
if(qName.equalsIgnoreCase("url"))
{
//url 값은 tempValue에 담겨 있을것!
}
}
XML의 속성에 접근하기 위해서는 startElement 메소드를 조작 하면 된다.
xml 파싱 참고링크
http://java.sun.com/developer/Books/xmljava/ch03.pdf
http://techblog.textcube.com/154
http://blog.bagesoft.com/727
댓글 없음:
댓글 쓰기