XML Parser

Size: px
Start display at page:

Download "XML Parser"

Transcription

1 XML Parser 6 조 이성훈 이재환 김기순

2 목차 1. Parsing의정의, 필요성 2. DOM Parser 3. SAX Parser 4. XML Pull Parser

3 1. Parsing 의정의, 필요성

4 Parsing 이란? 주어진문장을분석하거나문법적관계를해석하는것 Parsing 의필요성 프로그래밍이간편 플랫폼독립적프로그래밍언어에구애받지않음 필요한데이터를빠르게처리가능 웹상의 XML이수정되어도프로그램을변경하지않아도됨

5 2. DOM Parser

6 DOM 파서란? 문서의모든내용을해석한후메모리에트리구조로펼친후읽어들임 트리구조 < 학생 > < 이름 > 홍길동 </ 이름 > < 학번 > </ 학번 > < 학년 >2 학년 </ 학년 > </ 학생 > 학생 이름학번학년

7 DOM 파서장단점 장점 특정노드에대한임의접근이자유롭다. 원하는노드를몇번이고읽을수있다. 문서의수정도가능하다. 단점 메모리사용이많다. 처음시작이다소느리다. ( 문서전체를로딩해야하므로 )

8 설명 XML 문서를열기위한최초작업 1. DocumentBuilderFactory 객체생성 생성방법 : 정적 (static) 메소드 newinstance() 를통해생성 생성예 : DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 2. DocumentBuilder 객체생성 생성방법 : newdocumentbuilder() 메소드를통해생성 생성예 : DocumentBuilder builder = factory.newdocumentbuilder(); 두작업을마쳤다면이제 XML 문서를파싱할준비가끝남

9 설명 앞서만든 builder 객체로 parse() 메소드호출 Document parse (InputStream stream) Document parse (String URI) Document parse (File file) 매개변수 작성예 : Document doc = builder.parse(stream); 1. Parse() 메소드는받은문서를분석하여메모리에트리형태로전개 2. 트리구조정보를담고있는 Document 객체반환

10 접근방법 Document 객체를얻었다면요소에빠른속도로접근할수있다. Document 객체 학생 이름 이름 이름 학년 이성훈이재환김기순 4 학년

11 접근방법 Document 객체내루트엘리먼트에접근하기위한메소드 Element getdocumentelement() 사용예 : Element root = doc.getdocumentelement(); Document 객체 접근 학생 이름 이름 이름 학년 이성훈이재환김기순 4 학년

12 접근방법 루트에서태그명과일치하는모든자식요소를찾는메소드 NodeList getelementsbytagname( 태그명 ) 사용예 : NodeList childs = root.getelementsbytagname( 이름 ); Document 객체 학생 접근 이름 이름 이름 학년 이성훈이재환김기순 4 학년

13 접근방법 노드리스트에서하나의요소를선택하는방법 노드리스트.item( 번호 ) 접근예 : Node child = childs.item(0) Document 객체 학생 접근 이름 이름이름학년 이성훈이재환김기순 4 학년 첫번째이름요소에접근

14 접근방법 요소의내용에접근 노드명.getFirstChild() 접근예 : Node childvalue = child.getfirstchild() Document 객체 학생 이름 학번 접근 이성훈 DOM 에서는요소의내용값을요소의자식노드로취급한다. ( 단, 요소의속성은위규칙을따르지않는다. 위그림에서는학번에해당 )

15 접근방법 요소의모든속성에접근하는메소드 NamedNodeMap getattributes() 사용예 : NamedNodeMap Attrs= child.getattributes() Document 객체 학생 학번 이름 이성훈 주소 대구.. 접근

16 접근방법 속성목록에서하나의속성에접근하는방법 속성목록.item( 번호 ) 사용예 : Node attr= Attrs.item(0) Document 객체 학생 이름 이성훈 학번 주소대구.. 접근

17 접근방법 그밖의노드관련주요메소드 String getnodename() 노드이름 Short getnodetype() 노드타입 String getnodevalue() 노드값노드의이름, 타입, 값반환 Node getfirstchild() 첫번째자식노드 Node getlastchild() 마지막자식노드 Node getnextsibling() 자신의다음노드 Node getprevioussibling() 자신의이전노드 Node getparentnode() 자신의부모노드 NodeList getchildnodes() 모든자식노드노드를중심으로주변노드를찾는메소드

18 예제수행 버튼을누르면 XML 문서를파싱하는프로그램 루트요소 자식요소 속성 내용 메모장으로 student.xml 작성

19 예제수행환경 이클립스에서안드로이드프로젝트생성후 res raw 디렉터리에저장

20 예제수행환경 버튼하나와텍스트뷰로이루어진리니어레이아웃

21 코드작성 버튼의 onclick 리스너안에 DOM 파싱코드작성

22 코드작성 1 2 문서를읽어트리형태로통합된 Document 객체를얻는과정

23 예제수행 이쯤에서다시보는 student.xml 루트요소 자식요소 속성 내용

24 코드작성 이제 Student.xml 의각요소값을출력해보자.

25 실행결과 Parse XML 버튼을누르면내용출력

26 실제웹문서파싱해보기 한경닷컴 파싱할임의의뉴스선택

27 실제웹문서파싱해보기 마우스오른쪽버튼클릭 소스보기선택

28 실제웹문서파싱해보기 XML 문서출력

29 실제웹문서파싱해보기 루트요소 필요한부분 문서의구조를파악하고가져올부분을정함

30 실제웹문서파싱해보기 이문서의구조를간단히나타내면 루트요소 필요한부분 <?xml version="1.0" encoding="utf-8"?> <rss version="2.0"> <item> <title> 헤드라인 </title> </item> <item> </item> <item> </item> 접근방법을생각해보자

31 실제웹문서파싱해보기 Document 구조 rss < 접근절차 > 1. 루트요소 rss 에접근 item item item 그외 title title title 2. item 태그명을가진요소접근 3. item 요소내의자식요소중 title 요소접근 4. title 요소의내용접근 헤드라인헤드라인헤드라인

32 예제수행환경 버튼하나와리스트뷰로이루어진리니어레이아웃

33 예제수행환경 AndroidManifest.xml 파일에아래코드추가 < 주의 > 안드로이드버전이허니콤 (3.0) 이상일경우 메인쓰레드에선웹문서파싱이불가능 1. 이클립스에서작업버전을낮추거나 2. 별도의쓰레드를만들어파싱코드작성

34 코드작성 코드중엘리먼트접근부분 루트요소접근 Item 요소접근 Title 요소의내용접근

35 실행결과 헤드라인조회버튼을누르면내용출력

36 MainActivity 코드 ( 첫번째예제 ) import java.io.inputstream; import javax.xml.parsers.*; import org.w3c.dom.*; import android.os.bundle; import android.app.activity; import android.content.res.resources; import android.view.*; import android.widget.*; public class MainActivity extends Activity { TextView protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); mresult = (TextView)findViewById(R.id.result); public void monclick(view v){ try{ // xml 문서를파싱하기위한준비 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newdocumentbuilder(); Element root = doc.getdocumentelement(); // 루트엘리먼트 NodeList childs = root.getelementsbytagname("name"); // 루트엘리먼트에서 name 이란이름을가진요소전체 Node child = childs.item(0); // 첫번째 name 요소 NamedNodeMap Attrs = child.getattributes(); // name 의속성값 Node attr = Attrs.item(0); // name 의첫번째속성 Node childvalue = child.getfirstchild(); // 내용도하나의자식으로취급 String rootname = root.getnodename(); // 루트명 String childname = child.getnodename(); // 자식요소명 String childvalue = childvalue.getnodevalue(); // 자식요소값 String AttrName = attr.getnodename(); // 속성명 String AttrValue = attr.getnodevalue(); // 속성값 mresult.settext(" 루트요소이름 :" + rootname + "\n 자식요소이름 :" + childname + "\n 자식요소내용 :" + childvalue + "\n 자식요소속성명 :" + AttrName + "\n 자식요소속성값 :" + AttrValue); catch (Exception e){ mresult.settext(" 오류 "); // raw 디렉터리내의 student.xml 파일을읽어와스트림에저장 Resources res = getresources(); InputStream istream = res.openrawresource(r.raw.student); // parse 메소드로스트림을파싱하여 Document 객체를얻음 Document doc = builder.parse(istream);

37 MainActivity 코드 ( 두번째예제 ) import android.os.bundle; import android.os.handler; import android.os.message; import android.app.activity; import android.view.*; import android.widget.*; import javax.xml.parsers.*; import org.w3c.dom.*; import java.io.inputstream; import java.net.malformedurlexception; import java.net.url; import java.util.arraylist; public class MainActivity extends Activity { ArrayList<String> Headline = new ArrayList<String>(); ArrayAdapter<String> Adapter; ListView list; Handler mhandler = new Handler(){ public void handlemessage(message msg){ if(msg.what == 0){ Adapter = new ArrayAdapter<String>(MainActivity.this, android.r.layout.simple_list_item_1, Headline); list.setadapter(adapter); ; // url 을통해웹문서를읽어옴 public void gettext(){ try{ //////// xml 문서를파싱하기위한준비 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newdocumentbuilder(); protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); Button btn = (Button)findViewById(R.id.btn); list = (ListView)findViewById(R.id.list); btn.setonclicklistener(monclick); View.OnClickListener monclick = new View.OnClickListener() public void onclick(view v) { DataLoading thread = new DataLoading(); thread.start(); ; // 데이터로딩쓰레드 class DataLoading extends Thread { public void run(){ try{ gettext(); mhandler.sendemptymessage(0);// 데이터를얻어오면핸들러에게신호전달 catch(exception e){ e.printstacktrace(); //////// xml 웹문서를 Document 객체로만드는과정 String url= " // 주소 URL nurl = new URL(url); InputStream xml = nurl.openstream(); Document doc = builder.parse(xml); //////// 엘리먼트접근 Element root = doc.getdocumentelement(); // 루트엘리먼트 // item이란이름을가진모든요소를찾는다. NodeList items = root.getelementsbytagname("item"); for(int i=0;i<items.getlength();i++){ // 찾은갯수만큼루프 Node item = items.item(i); // 하나의 item요소접근 // item요소의두번째자식요소 title 접근 ( 첫번째자식은텍스트노드 ) Node title = item.getfirstchild().getnextsibling(); Node value = title.getfirstchild(); // title 요소의내용접근 Headline.add(value.getNodeValue()); // 내용을 Arraylist에삽입 catch (MalformedURLException e) { e.printstacktrace(); catch(exception e){ e.printstacktrace();

38 3. SAX Parser

39 SAX Parser SAX Parsing 의장점 메모리를차지하는공간이적음 XML 데이터를모두메모리에적재하지않고라인 ( 시작태그 - 종료태그 ) 단위로마킹 대용량 XML 을 Parsing 해도속도가빠름 1 라인 2 라인

40 SAX Parser SAX Parsing 의단점 지나간엘리먼트를읽어오기위해서는처음부터다시읽어야함 특정엘리먼트에대해서어떻게동작할지사용자가직접정의

41 SAX Parser SAX API 프로그래밍을하려면? 1 세개의패키지를 import - [org.xml.sax], [ogr.xml.sax.helpers], [javax.xml.parsers] 2 이벤트핸들러클래스를설계하여이벤트핸들러를등록 3 파서객체를생성 4 이벤트핸들러로이벤트객체생성 5 파서객체에이벤트객체를적용시켜서 XML문서파싱

42 SAX Parser 1 이벤트핸들러클래스설계 DefaultHandler 클래스로부터상속받아이벤트핸들러클래스를설계 class MyHandler extends DefaultHandler { public void startdocument(){ // 문서의시작 public void startelement(){ // 요소의시작 public void endelement( ){ // 요소의끝 public void enddocument( ){ // 문서의종료

43 SAX Parser 2 파서객체생성 추상클래스 SAXParserFactory 의 newsaxparser 메소드를사용하여생성 SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newsaxparser();

44 SAX Parser 3 이벤트객체생성 앞서 1 에서설계한 MyHandler 클래스로객체생성 MyHandler myh = new MyHandler();

45 SAX Parser 4 요소추출 메소드에대한이해 public void startelement(string nsuri, String name, String qname, Attributes atts){ //startelement() 는 XML태그를만나면호출 //name : XML네임스페이스의접두사를제외한태그이름 //qname : XML네임스페이스의접두사를포함한태그이름 //atts : 태그에선언한속성 public void characters(char ch[], int start, int length){ //charcters() 는 XML 의태그가아닌데이터를알려주는메소드 // 데이터내용은 ch 의 start 인덱스에서 length 만큼의문자에해당

46 SAX Parser 5 속성의이름과값알아내기 startelement() 메소드는속성에대한정보를 Attributes 를통해알아냄 Attributes 의 getlength() 메소드는속성의개수 Attributes 의 getqname() 메소드는속성의이름 Attributes 의 getvalue() 메소드는속성의값

47 SAX Parser 간단한예제 1( 내부 XML 파싱 ) 버튼을누르면다음의 XML 을파싱하는프로그램

48 SAX Parser XML 생성 1 프로젝트생성후 [res] 디렉터리에 [raw] 폴더생성 2 [raw] 폴더에 [test.xml] 생성 3 다음과같이 XML 데이터작성

49 SAX Parser Activity_main.xml 1 [layout]-[activity_main.xml] 에서 Button 생성 2 동일한방법으로 TextView 생성 Button TextView

50 SAX Parser SAXHandler.java 1 [src]-[packge]-[saxhandler.java] 를생성하고 DefaultHandler 를상속 2 컨텐트를저장하는 str 객체, 속성을저장하는 attr 객체, element 의시작과끝을알리는 isappend 변수선언 3 startelement() 는시작태그를만나면실행되는메소드고 sedan 이라는태그를만나면 isappend 에 true 값을주어라인시작을알리고속성명과속성값을 attr 에저장 (Log.i() 는이클립스의 LogCat 에로그정보를보기위해사용, 생략가능 )

51 SAX Parser SAXHandler.java 4 컨텐트를저장하고컨텐트와속성을출력하는 characters() 메소드 5 endelement() 는종료태그를만나면실행되는메소드고엘리먼트 isappend 를 false 값을줌으로써라인의끝을알림

52 SAX Parser SAXHandler.java 5 stardocument(), enddocument() XML 문서의시작과끝을알리는메소드이고특별한오버라이딩은하지않고호출되는지확인하기위해 Log.i() 만사용

53 SAX Parser MainActivity.java 1 [src]-[packge]-[mainactivity.java] 에서 Activity 를상속받은 MainActivity 에사용할 TextView 와 Button 객체생성 2 oncreate() 메소드에사용될 TextView 와 Button ID 를불러옴

54 SAX Parser MainActivity.java 3 Button parse는버튼이눌리면파스를해야하므로이벤트추가 4 앞서만들어놓은 [raw]-[test.xml] 을가져오기위한 Resource클래스, XML을입력하기위한 InputStream클래스선언 5 파서객체를선언하고앞서생성한이벤트핸들러로파싱

55 SAX Parser 실행결과

56 SAX Parser 간단한예제 2( 외부 XML 파싱 ) 버튼을누르면다음의 XML 을파싱하는프로그램 ( CATALOG CD TITLE ARTIST PRICE YEAR CD TITLE ARTIST PRICE YEAR

57 SAX Parser AndroidManifest.xml 1 컴퓨터내에존재하는 XML 과달리웹페이지에존재하는 XML 을파싱하기위해서퍼미션설정 2 AndroidManifest.xml 코드상에다음구문을추가 또는 [permissions] 탭에서설정가능

58 SAX Parser

59 SAX Parser Activity_main.xml 1 XML 데이터가많으므로 TextView 에서내용이잘리지않도록 ScrollView 사용 Button TextView ScrollView

60 SAX Parser SAXHandler.java 1 [src]-[packge]-[saxhandler.java] 를생성하고 DefaultHandler 를상속받아 SAXHandler 의메소드를오버라이딩 2 컨텐트를저장하는 str 객체, 총엘리먼트의개수를알리는변수 count 선언 3 컨텐트를저장하고컨텐트와속성을출력하는 characters() 메소드

61 SAX Parser SAXHandler.java 4 startelement() 는시작태그를만나면실행되는메소드고각태그의컨텐트앞에태그명을붙여주기위해조건문을사용

62 SAX Parser SAXHandler.java 5 endelement() 는종료태그를만나면실행되는메소드이고 CD 태그를이용하여구분선을넣어주고 CD 개수를카운트하는변수 1 증가 6 stardocument(), enddocument() XML 문서의시작과끝을알리는메소드이고 XML 문서끝을만나면총 CD 개수를출력

63 SAX Parser MainActivity.java 1 [src]-[packge]-[mainactivity.java] 에서 Activity 를상속받은 MainActivity 에사용할 ScrollView, TextView 와 Button 객체생성 2 oncreate() 메소드에사용될 ScrollView, TextView, Button ID 를불러옴

64 SAX Parser MainActivity.java 3 4 Button parse는버튼이눌리면파스를해야하므로이벤트추가 XML을읽어오는 XMLReader 객체를생성하고 URL객체를통해 XML 이있는 URL를받아파싱

65 SAX Parser android.os.networkonmainthreadexception 원인 안드로이드 3.0 버전이후부터발생되는오류 해결책 MainThread 에서는 UI 작업만담당하는역할 ANR(Application Not Responding) 을방지 강제로사용이가능하게함 MainActivity.java에 oncreate() 내부 setcontentview() 아래에다음의코드를추가 AndroidManifest.xml 의버전을 9 로변경

66 SAX Parser 실행결과

67 예제 1 소스코드 MainActivity.java package com.example.pharsingsax; import java.io.inputstream; import javax.xml.parsers.saxparser; import javax.xml.parsers.saxparserfactory; import android.app.activity; import android.content.res.resources; import android.os.bundle; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.textview; public class MainActivity extends Activity { static TextView result; Button protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); result = (TextView) findviewbyid(r.id.result); findviewbyid(r.id.parse).setonclicklistener(new public void onclick(view v) { result.settext(""); Resources res = getresources(); InputStream is = res.openrawresource(r.raw.test); try{ SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newsaxparser(); SAXHandler handler = new SAXHandler(); parser.parse(is, handler); catch (Exception e){ e.printstacktrace(); ); SAXHandler.java package com.example.pharsingsax; import org.xml.sax.attributes; import org.xml.sax.saxexception; import org.xml.sax.helpers.defaulthandler; import android.util.log; class SAXHandler extends DefaultHandler { StringBuffer str = new StringBuffer(); StringBuffer attr = new StringBuffer(); boolean isappend = false; public void characters(char[] ch, int start, int length) throws SAXException{ String temp = new String(ch, start, length); if(isappend==true&&temp.trim().length()!=0){ str.append(temp); MainActivity.result.append("\n"+str+"\n \n"); MainActivity.result.append(attr); str.delete(0, str.length()); attr.delete(0, attr.length()); public void startelement(string uri, String localname, String qname, Attributes attributes){ if(qname.equals("sedan")){ isappend = true; for(int index = 0; index < attributes.getlength(); index++){ attr.append(attributes.getqname(index)+" : " + attributes.getvalue(index)+"\n"); Log.i("sax", "startelement()"); public void endelement(string uri, String localname, String qname) throws SAXException { IsAppend = false; Log.i("sax", "endelement()"); public void startdocument() throws SAXException{ Log.i("sax", "startdocument()"); public void enddocument() throws SAXException{ Log.i("sax", "enddocument()");

68 예제 1 소스코드 Activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/parse" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="parse" /> test.xml <?xml version="1.0" encoding="utf-8"?> <car> <sedan type=" 대형 " cc="3000cc" price="4000"> Granduer </sedan> <sedan type=" 중형 " cc="2000cc" price="3000"> Sonata </sedan> </car> <TextView android:id="@+id/result" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="left top" android:textsize="10pt" /> </LinearLayout>

69 예제 2 소스코드 MainActivity.java package com.example.pharsingsax; import java.net.url; import javax.xml.parsers.saxparser; import javax.xml.parsers.saxparserfactory; import org.xml.sax.inputsource; import org.xml.sax.xmlreader; import android.app.activity; import android.os.bundle; import android.os.strictmode; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.scrollview; import public void onclick(view v) { result.settext(""); try{ SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newsaxparser(); SAXHandler handler = new SAXHandler(); XMLReader xmlr = parser.getxmlreader(); URL url = new URL(" xmlr.setcontenthandler(handler); xmlr.parse(new InputSource(url.openStream())); catch (Exception e){ e.printstacktrace(); ); public class MainActivity extends Activity { static TextView result; Button parse; ScrollView protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder(). detectdiskreads().detectdiskwrites().detectnetwork().penaltylog().build()); mscrollview =(ScrollView) findviewbyid(r.id.mscrollview); result = (TextView) findviewbyid(r.id.result); findviewbyid(r.id.parse).setonclicklistener(new OnClickListener(){

70 예제 2 소스코드 SAXHandler.java package com.example.pharsingsax; import org.xml.sax.attributes; import org.xml.sax.saxexception; import org.xml.sax.helpers.defaulthandler; import android.util.log; class SAXHandler extends DefaultHandler { StringBuffer str = new StringBuffer(); int count = 0; public void characters(char[] ch, int start, int length) throws SAXException{ String temp = new String(ch, start, length); if(temp.trim().length()!=0){ str.append(temp); MainActivity.result.append(str); str.delete(0, str.length()); public void startelement(string uri, String localname, String qname, Attributes attributes){ Log.i("sax", "startelement()"); if(localname.equals("title")){ MainActivity.result.append("\n TITLE : "); else if(localname.equals("artist")){ MainActivity.result.append("\n ARTIST : "); else if(localname.equals("country")){ MainActivity.result.append("\n COUNTRY : "); else if(localname.equals("price")){ MainActivity.result.append("\n PRICE : "); else if(localname.equals("year")){ MainActivity.result.append("\n YEAR : "); public void endelement(string uri, String localname, String qname) throws SAXException { if(localname.equals("cd")){ count++; MainActivity.result.append("\n \n"); public void startdocument() throws SAXException{ public void enddocument() throws SAXException{ MainActivity.result.append("TOTAL :" + count +"\n \n");

71 예제 2 소스코드 Activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/parse" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="parse" /> <ScrollView android:id="@+id/mscrollview" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/result" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="left top" android:textsize="10pt" /> </ScrollView> </LinearLayout> AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" package="com.example.pharsingsax" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="9" android:targetsdkversion="18" /> <uses-permission android:name="android.permission.internet"/> <application android:allowbackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" > <activity android:name="com.example.pharsingsax.mainactivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest>

72 4. XML Pull Parser

73 XML Pull Parser XML Pull Parser 특징 1. 전체동작방식은 SAX와비슷 2. SAX와달리이벤트핸들러를작성하지않아도되므로간편 3. 문서의일부분만작업해야할경우엔 SAX보다빠르고단순하게처리가능

74 Pull Parser 코드작성방법 1. 빌더생성후파서객체생성 newinstance() 를통해빌더팩토리생성후 newpullparser() 메소드를통해파서객체를얻는다. 2. 분석하고싶은 xml 파일을설정 XmlPullParser 클래스의 setinput(inputstream, String) 을통해분석할 xml 과인코딩방식을설정

75 Pull Parser 코드작성방법 3. 문서를순차적으로읽으면서이벤트를진행 현재이벤트를분석하고 next() 메소드로다음이벤트로이동시킨다.

76 XMLPullParser 분석진행방법 ( 속성 ) 속성 의미 START_DOCUMENT START_TAG TEXT END_TAG END_DOCUMENT XML 파일의시작에도달했을때반환 요소의시작태그를만났을때반환 요소의텍스트를만났을때반환 (<tag>text</tag> 에서 TEXT) 요소의종료태그를만났을때반환 (</tag>) XML 파일의끝에도달했을때반환 geteventtype() 으로현재속성을가져오고 next() 로다음속성으로이동

77 XmlPullParser 형식을 이용한간단한예제

78 예제 1 이클립스에서안드로이드프로젝트생성후 res raw 디렉터리에 test.xml 생성

79 예제 1 test.xml 파일에다음과같이입력

80 예제 1 LinearLayout 내부에 Button 과 TextView 를추가

81 예제 1 MainActivity 클래스의상속을 Activity 로고치고 TextView 와 Button 객체를생성후 oncreate() 메소드에사용될 TextView 와 Button 을불러옴

82 예제 1 버튼이클릭되었을때이벤트를발생시키는 onclick() 선언 Resouces 클래스와 InputStream 클래스를통해 xml 파일을읽어옴 PullPaser 인스턴스를생성하여파서객체를얻고 setinput() 메소드를이용하여 xml 을저장

83 예제 태그가맞게들어왔는지체크하기위한 boolean데이터타입을선언하고 tag를저장하기위한 tag변수와문자열을저장하고출력해주기위해 StringBuffer클래스를사용합니다. 이벤트타입을얻기위해 geteventtype메소드로저장을하고 SAX의이벤트핸들러대신루프를써서 end태그가아니면루프를돌면서파싱을하게한다.

84 예제 1 START_TAG 를만나면 getname() 메소드를이용하여현재태그의이름을저장하고그태그가 student 을경우태그가들어왔으므로 true 로설정하고 StingBuffer 의변수 attr.append() 를이용해속성의이름과속성의내용을저장한다.

85 예제 1 TEXT 태그를만났을경우태그의내용과 StringBuffer 로추가시킨문자열을 TextView 에출력시켜줍니다. 그리고 next() 메소드를통해다음태그로이벤트를이동시킨다.

86 예제 1 실행결과 버튼클릭

87 XmlPullParser 를이용한 간단한웹문서파싱

88 예제 2 기상청 RSS 파싱할동네주소선택후 RSS 버튼클릭

89 예제 2 필요한태그만지정하여파싱

90 예제 2 Activity_main.xml

91 예제 2 AndroidManifest.xml

92 예제 2 AndroidManifest.xml 5

93 예제 2 MainActivity 클래스에서 TextView, Button 의객체와내용이잘리지않기위한 ScrollView 객체를선언하고 String 형으로외부 xml 사이트를저장하고 URL 클래스를선언후 oncreate() 메소드에서사용될각각의객체들을불러온다.

94 예제 onclick() 은버튼이클릭되었을때이벤트를발생시키는메소드으로그내부에는 URL클래스를객체선언하여 uri에저장된사이트를접속하여 xml데이터를읽어 inputstream에저장시킨다. PullParser인스턴스를생성하여파서객체를얻고 setinput() 메소드를이용하여 xml을저장한다.

95 예제 2 루프문을이용하여 EventType 이 END_DOCUMENT 를만날때까지계속실행시킨다. START_TAG 를만나면 getname() 을이용하여현재태그명을저장하고해당태그명이일치할경우 TextView 에해당출력물을출력시킨다.

96 예제 2 TEXT 와 END_TAG 도마찬가지로현재해당태그명의조건에있을경우그에따른결과를출력해주면된다. 그리고 next() 메소드를통해다음태그로이벤트를이동시킨다.

97 예제 2 실행결과 버튼클릭

98 예제 1 소스코드 MainActivity.java package com.example.xmlpullparser; import java.io.inputstream; import org.xmlpull.v1.xmlpullparser; import org.xmlpull.v1.xmlpullparserexception; import org.xmlpull.v1.xmlpullparserfactory; import android.support.v7.app.actionbaractivity; import android.support.v7.app.actionbar; import android.support.v4.app.fragment; import android.app.activity; import android.content.res.resources; import android.os.bundle; import android.view.layoutinflater; import android.view.menu; import android.view.menuitem; import android.view.view; import android.view.view.onclicklistener; import android.view.viewgroup; import android.widget.button; import android.widget.textview; import android.os.build; public class MainActivity extends Activity { TextView result; Button protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.fragment_main); result= (TextView)findViewById(R.id.result); findviewbyid(r.id.parse).setonclicklistener(new OnClickListener() public void onclick(view v) { result.settext(""); Resources res = getresources(); InputStream is = res.openrawresource(r.raw.test); try { XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser parser = factory.newpullparser(); parser.setinput(is,null); boolean bool = false; String tag; StringBuffer attr = new StringBuffer(); int EventType = parser.geteventtype(); while(eventtype!= XmlPullParser.END_DOCUMENT){ switch(eventtype){ case XmlPullParser.START_TAG: tag = parser.getname(); if(tag.equals("student")){ bool=true; int index; for(index=0;index<parser.getattributecount();index++){ attr.append(parser.getattributename(index) +" : " +parser.getattributevalue(index) +"\n"); break; case XmlPullParser.TEXT: if(bool==true){ result.append(parser.gettext()); result.append("\n \n"); result.append(attr); attr.delete(0, attr.length()); bool=false; break; //end of switch EventType = parser.next(); catch (Exception e) { e.printstacktrace();

99 예제 1 소스코드 Activity_main.xml <LinearLayout xmlns:android=" xmlns:tools=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:id="@+id/parse" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=" 버튼클릭 "/> <TextView android:id="@+id/result" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="left top" android:textsize="10pt" /> </LinearLayout> AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" package="com.example.xmlpullparser" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="8" android:targetsdkversion="17" /> <uses-permission android:name="android.permission.internet"/> <application android:allowbackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" > <activity android:name="com.example.xmlpullparser.mainactivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest>

100 예제 2 소스코드 MainActivity.java package com.example.weather; import java.io.inputstream; import java.net.url; import org.xmlpull.v1.xmlpullparser; import org.xmlpull.v1.xmlpullparserfactory; import android.support.v7.app.actionbaractivity; import android.support.v7.app.actionbar; import android.support.v4.app.fragment; import android.app.activity; import android.os.bundle; import android.os.strictmode; import android.view.layoutinflater; import android.view.menu; import android.view.menuitem; import android.view.view; import android.view.viewgroup; import android.view.view.onclicklistener; import android.widget.button; import android.widget.scrollview; import android.widget.textview; import android.os.build; public class MainActivity extends Activity { TextView result; Button parse; ScrollView mscrollview; String uri = " URL protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.fragment_main); mscrollview = (ScrollView)findViewById(R.id.mScrollView); result = (TextView) findviewbyid(r.id.result); { findviewbyid(r.id.parse).setonclicklistener(new public void onclick(view v) { result.settext(""); try { newsurl = new URL(uri); InputStream in = newsurl.openstream(); XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser parser = factory.newpullparser(); parser.setinput(in, "utf-8"); String tag = ""; int EventType = parser.geteventtype(); while (EventType!= XmlPullParser.END_DOCUMENT) { switch(eventtype){ case XmlPullParser.START_TAG: tag = parser.getname(); if(tag.equals("hour")){ result.append(" 시간 : "); else if(tag.equals("temp")){ result.append(" 기온 :"); else if(tag.equals("wfkor")){ result.append(" 하늘 : "); else if(tag.equals("pop")){ result.append(" 강수확률 : "); break; case XmlPullParser.TEXT: if(tag.equals("hour")){ result.append(parser.gettext()); else if(tag.equals("temp")){ result.append(parser.gettext()); else if(tag.equals("wfkor")){ result.append(parser.gettext()); else if(tag.equals("pop")){ result.append(parser.gettext()); else if(tag.equals("pubdate")){ result.append(parser.gettext()); break; case XmlPullParser.END_TAG: tag = parser.getname(); if(tag.equals("data")){ result.append("======================\n");

101 예제 2 소스코드 Activity_main.xml <LinearLayout xmlns:android=" xmlns:tools=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:id="@+id/parse" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=" 구미시양포동날씨보기 "/> <ScrollView android:id="@+id/mscrollview" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/result" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="left top" android:textsize="10pt" /> </ScrollView> </LinearLayout> AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" package="com.example.weather" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="9" android:targetsdkversion="17" /> <uses-permission android:name="android.permission.internet"/> <application android:allowbackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" > <activity android:name="com.example.weather.mainactivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest>

102

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID android:title= 항목제목 /> </menu> public boolean oncreateoptionsmenu(menu menu) { getme 8 차시메뉴와대화상자 1 학습목표 안드로이드에서메뉴를작성하고사용하는방법을배운다. 안드로이드에서대화상자를만들고사용하는방법을배운다. 2 확인해볼까? 3 메뉴 1) 학습하기 [ 그림 8-1] XML 을이용한옵션메뉴설정방법 public boolean

More information

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=http://schemas.android.com/apk/res/android 2 xmlns:tools=http://schemas.android. 10 차시파일처리 1 학습목표 내장메모리의파일을처리하는방법을배운다. SD 카드의파일을처리하는방법을배운다. 2 확인해볼까? 3 내장메모리파일처리 1) 학습하기 [ 그림 10-1] 내장메모리를사용한파일처리 2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1

More information

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 - 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 - ArrayAdapter ArrayAdapter adapter = new ArrayAdapter(this, android.r.layout.simple_list_item_1,

More information

( )부록

( )부록 A ppendix 1 2010 5 21 SDK 2.2. 2.1 SDK. DevGuide SDK. 2.2 Frozen Yoghurt Froyo. Donut, Cupcake, Eclair 1. Froyo (Ginger Bread) 2010. Froyo Eclair 0.1.. 2.2. UI,... 2.2. PC 850 CPU Froyo......... 2. 2.1.

More information

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요 9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요 [ 그림 9-1] 시간예약앱 활동과정 - 2 - [ 그림 9-2] 안드로이드 SDK Manager [ 예제 9-1]main.xml 1

More information

어댑터뷰

어댑터뷰 04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결

More information

03장

03장 CHAPTER3 ( ) Gallery 67 68 CHAPTER 3 Intent ACTION_PICK URI android provier MediaStore Images Media EXTERNAL_CONTENT_URI URI SD MediaStore Intent choosepictureintent = new Intent(Intent.ACTION_PICK, ë

More information

리니어레이아웃 - 2 -

리니어레이아웃 - 2 - 4 차시레이아웃 1 학습목표 레이아웃의개념을이해한다. 중복리니어레이아웃의개념이해한다. 2 확인해볼까? 3 레이아웃개념익히기 1) 학습하기 [ 그림 4-1] ViewGroup 클래스계층도 리니어레이아웃 - 2 - [ 예제 4-1]orientation 속성-horizontal 1

More information

01장

01장 CHAPTER1 Camera (MediaStore) EXIF 1 2 CHAPTER 1 SDK (intent) Camera Camera Camera Android Manifest xml Camera Camera

More information

[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation="vertical" > 4 <ImageView

[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation=vertical > 4 <ImageView 7 차시이미지처리 1 학습목표 이미지뷰를사용하는방법을배운다. 비트맵을사용하는방법을배운다. 2 확인해볼까? 3 이미지뷰와이미지버튼 1) 학습하기 [ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 4

More information

학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다.

학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다. 헬로, 안드로이드 4 주차 사용자인터페이스디자인하기 (2) 강대기동서대학교컴퓨터정보공학부 학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다. 차례 메뉴추가하기 Settings 추가하기 새게임시작하기

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다.

학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다. 헬로, 안드로이드 3 주차 사용자인터페이스디자인하기 (1) 강대기동서대학교컴퓨터정보공학부 학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다. 차례 스도쿠예제소개하기 선언하여디자인하기 시작화면만들기 대체리소스사용하기 About

More information

50_1953.pdf

50_1953.pdf C h a p t e r 02 194 Part Mobile Apps 01 01 02 Chapter 02 195 03 04 196 Part 02 01 02 03 04 Chapter 02 197 05 06 07 08 198 Part 03 01 02 Chapter 02 199 03 04 05 06 200 Part 07 08 09 10 Chapter 02 201 04

More information

13ÀåÃß°¡ºÐ

13ÀåÃß°¡ºÐ 13 CHAPTER 13 CHAPTER 2 3 4 5 6 7 06 android:background="#ffffffff"> 07

More information

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법

More information

Java XPath API (한글)

Java XPath API (한글) XML : Elliotte Rusty Harold, Adjunct Professor, Polytechnic University 2006 9 04 2006 10 17 문서옵션 제안및의견 XPath Document Object Model (DOM). XML XPath. Java 5 XPath XML - javax.xml.xpath.,? "?"? ".... 4.

More information

슬라이드 1

슬라이드 1 헬로, 안드로이드 3 주차 사용자인터페이스디자인하기 (1) 강대기동서대학교컴퓨터정보공학부 학습목표 선언하여디자인을하는방법을이해하고, 실행핛수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행핛수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행핛수있다. 차례 스도쿠예제소개하기 선언하여디자인하기 시작화면만들기 대체리소스사용하기 About

More information

XML DTD

XML DTD XML DOM (Document Object Model) 2017. 9. 27 Content XML 문서처리 DOM 개요 DOM Tree DOM Core Interfaces Node Document Element Attr DOM 사용예 1 XML 문서처리 XML 문서처리과정 XML Parser 2 XML 문서처리 XML Parsing XML 문서를읽고해석하여구성요소,

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

이것은리스트뷰의 setadapter 메소드에잘표현되어있습니다. setadapter 는리스트뷰에사용할데이터객체를넘겨주는메소드입니다. 일반적으로생각한다면 ArrayAdapter 객체를생성하여사용할데이터를저장할것이고데이터가저장된 ArrayAdapter 객체를 setadapt

이것은리스트뷰의 setadapter 메소드에잘표현되어있습니다. setadapter 는리스트뷰에사용할데이터객체를넘겨주는메소드입니다. 일반적으로생각한다면 ArrayAdapter 객체를생성하여사용할데이터를저장할것이고데이터가저장된 ArrayAdapter 객체를 setadapt 1. 리스트뷰의구조 리스트뷰는어떤데이터그룹에대한각각의정보들을항목별로출력시키고사용자에게원하는항목을검색하거나선택할수있도록해주는컨트롤객체입니다. 그래서다른컨트롤처럼정해진형태의정보를저장하는것이아니기때문에리스트뷰가데이터를직접관리하기는힘들었을것입니다. 그래서효과적인데이터관리를위해 "ArrayAdapter" 라는클래스가추가되었고리스트뷰는이클래스를이용해서사용자가지정한데이터에접근하도록구현되어있습니다.

More information

Daum 카페

Daum 카페 인쇄하기 인쇄 [22 장 ] 프래그먼트 (1/8) (20140815 완료 ) 책에담지못한장들 슈퍼성근 조회 326 2014/08/10 22:38:46 주의 : 소스내용중 "0nClick", "0nStart" 함수명첫글자가숫자 0 인것은오타가아닙니다. 다움게시판은 o n C l i c k 라는글을입력할수없기때문에어쩔수없이 영문소문자 o 를숫자 0 으로대체하였습니다.

More information

REMON Android SDK GUIDE (SDK Version 1.4.1) 1 / 25

REMON Android SDK GUIDE (SDK Version 1.4.1) 1 / 25 REMON Android SDK GUIDE (SDK Version 1.4.1) 1 / 25 문서개정내역 변경일버전변경내용비고 2014.06.30 1.0.0 최초작성 2014.09.30 1.1.0 개인정보항목변경, 개인정보이용약관기능추가 2014.12.01 1.2.0 Proguard 추가 2014.12.16 1.2.0 Android Studio 기준샘플및가이드추가

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 발표자윤승환 1 XML DOM DOM 의구조 예제및참고자료 2 XML XML 개요 XML 문법 XML 파서의종류 (DOM, SAX) DOM 의구조 트리구조도 DOM 인터페이스 DOM DOM 개요 DOM 사용목적 DOM 장점과단점 예제및참고자료 XML 파일 DOM 파싱 DOM 인터페이스추가내용 웹서버에 XML 파일 DOM 파싱 3 XML 의개요 extensible

More information

OpenCV와 함께하는 컴퓨터 비전 프로그래밍 캠프

OpenCV와 함께하는 컴퓨터 비전 프로그래밍 캠프 OpenCV 와함께하는컴퓨터비전프로그래밍캠프 Appx. 안드로이드 OpenCV 프로그래밍 Last Update: 2018/06/07 Visual C++ 영상처리프로그래밍 저자 황선규 / 공학박사 sunkyoo.hwang@gmail.com 모바일컴퓨터비전프로그래밍 목차 Android 개요 Android 개발환경구축 Android Studio 설치 OpenCV

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx 2018 학년도 1 학기 JAVA 프로그래밍 II 514760-1 2018 년봄학기 5/10/2018 박경신 Lab#1 (ImageTest) Lab#1 은영상파일 (Image) 을읽어서정보를출력 Java Tutorials Lesson: Working with Images https://docs.oracle.com/javase/tutorial/2d/images/index.html

More information

// 화면을터치하였을때해야할작업구현 case MotionEvent.ACTION_MOVE: // 화면을드래그하였때 // 화면을드래그하였을때해야할작업구현 case MotionEvent.ACTION_UP: // 화면에서터치가사라질때 // 화면에서터치가사라질때해야할자업구현 c

// 화면을터치하였을때해야할작업구현 case MotionEvent.ACTION_MOVE: // 화면을드래그하였때 // 화면을드래그하였을때해야할작업구현 case MotionEvent.ACTION_UP: // 화면에서터치가사라질때 // 화면에서터치가사라질때해야할자업구현 c 6 차시이벤트처리 1 학습목표 터치이벤트처리를배운다. XML 의 onclick 속성을사용하여이벤트를처리한다. 2 확인해볼까? 3 이벤트처리하기 1) 학습하기 터치이벤트 public boolean ontouchevent(motionevent event) { swtich(event.getaction()) { case MotionEvent.ACTION_DOWN:

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

12 주차 인텐트

12 주차 인텐트 12 주차 인텐트 학습내용 1. 서브액티비티 2. 인텐트 3. 액티비티의생명주기 서브액티비티 액티비티 액티비티개요 - 안드로이드응용프로그램을구성하는주요콤포넌트의하나이며, 각예제마다하나씩액티비티를만들었는데각예제의화면하나가바로액티비티임 액티비티 액티비티개요 - 윈도우와유사한개념이지만 하나의화면 이라고이해하는것이옳음 - 즉, 액티비티는사용자와상호작용할수있는하나의윈도우라고생각하면옳음

More information

웹 프로그래밍

웹 프로그래밍 XML 프로세서 배재대학교 김창수 sungu@markup.paichai.ac.kr XML 프로세서개요 정의 XML 문서를읽어문서내용및구조에대한접근을제공하는소프트웨어 지원기능 엘리먼트, 속성, 엔티티정보생성 문서의정확성검증 XML 문서처리를수행하도록지원 2 XML 프로세서역할 XML 브라우저 XML 응용 SAX 범용 XML 프로세서 DOM Level 3 DOM

More information

JAVA PROGRAMMING 실습 09. 예외처리

JAVA PROGRAMMING 실습 09. 예외처리 2015 학년도 2 학기 예외? 프로그램실행중에발생하는예기치않은사건 예외가발생하는경우 정수를 0으로나누는경우 배열의크기보다큰인덱스로배열의원소를접근하는경우 파일의마지막부분에서데이터를읽으려고하는경우 예외처리 프로그램에문제를발생시키지않고프로그램을실행할수있게적절한조치를취하는것 자바는예외처리기를이용하여예외처리를할수있는기법제공 자바는예외를객체로취급!! 나뉨수를입력하시오

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

TipssoftAppActivity.java // 기본소스파일 main.xml // 배치와구성에관련된리소스파일 string.xml // 프로그램에서사용할문자열에관련된리소스파일 컴파일을하고나면 r.java 라는소스파일이하나추가되는데이파일은리소스파일을소스파일에서이용할수있도

TipssoftAppActivity.java // 기본소스파일 main.xml // 배치와구성에관련된리소스파일 string.xml // 프로그램에서사용할문자열에관련된리소스파일 컴파일을하고나면 r.java 라는소스파일이하나추가되는데이파일은리소스파일을소스파일에서이용할수있도 1. " 소스파일 " 과 " 리소스파일 " 에대하여 소스파일은우리가흔히알고있듯이프로그래밍언어를사용해서자신이만들고자하는프로그램을구현한파일입니다. 예전에작성된프로그램들은소스파일만으로이루어진프로그램도많았습니다. 하지만, 프로그램환경이점점더복잡해지고사용자인터페이스가다양해지면서인터페이스구성을서술식으로나열해서소스파일에표현하는것은한계가왔고작업효율을떨어트리게되어해결책이필요하게되었습니다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr 오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2 디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3 이클립스에서디버깅 4 이클립스에서디버깅 5 이클립스의디버깅명령어 6 예외처리

More information

1

1 제 1502 회모바일앱개발전문가전문가 A 형정답 < 객관식 > 1 2 3 4 5 6 7 8 9 10 1 3 4 2 1 3 3 2 2 4 11 12 13 14 15 16 17 18 19 20 4 1 2 4 4 4 4 2 2 1 21 22 23 24 25 26 27 28 29 30 1 4 3 4 4 1 1 1 3 3 31 32 33 34 35 36 37 38 39

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Application Framework 어플리케이션프레임워크 발표자 : 김준섭 이문서는나눔글꼴로작성되었습니다. 다운받기 목차 Application Framework. 1. 통지관리자 (Notification Manager) 2. 리소스관리자 (resource manager) 3. 레이아웃인플레이터매니저 (Layout Inflater Manager) Notification

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field

More information

슬라이드 1

슬라이드 1 3 장안드로이드프로그램의 첫걸음 시작하면서 2 목차 프로젝트의생성하기 프로젝트파읷및소스코드이해 코드로문자열표시하기 문자열출력프로그램응용 프로젝트에새로운파읷 / 속성추가 프로젝트생성하기 프로젝트생성하기 4 < 실습 5-1>: Android 프로젝트의생성과에뮬레이터구동 (1)[ 그림 3-1](a) 처럼안드로이드프로젝트생성아이콘클릭 [ 그림 3-1](b) 처럼이클립스에서메뉴선택

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

Chap 8 호스트시스템개발환경구성및 안드로이드개발환경구축

Chap 8 호스트시스템개발환경구성및 안드로이드개발환경구축 Chap 8 호스트시스템개발환경구성및 안드로이드개발환경구축 1. 호스트시스템개발환경구축 1.1. 라이브러리설치 bootloader, kernel, 그리고 filesystem을컴파일하기위해서아래바이너리들을추가로설치해준다. root@ubuntu:/work/achroimx6q# apt-get install uuid uuid-dev root@ubuntu:/work/achroimx6q#

More information

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V Mobile Service > IAP > Android SDK IAP SDK TOAST SDK. IAP SDK. Android Studio IDE 2.3.3 Android SDK Version 2.3.3 (API Level 10). Name Reference Version License okhttp http://square.github.io/okhttp/ 1.5.4

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

02 C h a p t e r Java

02 C h a p t e r Java 02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER

More information

변수이름 변수값 PATH ;C:\Program Files\Java\jdk1.8.0_45\bin CLASSPATH.;C:\Program Files\jdk1.8.0_45\lib\tools.jar JAVA_HOME C:\Program Files\Java\jdk1.8.0_45

변수이름 변수값 PATH ;C:\Program Files\Java\jdk1.8.0_45\bin CLASSPATH.;C:\Program Files\jdk1.8.0_45\lib\tools.jar JAVA_HOME C:\Program Files\Java\jdk1.8.0_45 안드로이드앱개발과정추가교재 - Android Studio 사용 [ 실습 01] 개발환경설치 ( 안드로이드스튜디오 & Eclipse IDE + Android SDK) I. 안드로이드스튜디오 1. JDK 다운로드및설치 (1) JDK 다운로드 1 JDK다운로드를위해웹브라우저에 http://www.oracle.com/technetwork/java/javase/downloads/index.html

More information

Secure Programming Lecture1 : Introduction

Secure Programming Lecture1 : Introduction Malware and Vulnerability Analysis Lecture3-2 Malware Analysis #3-2 Agenda 안드로이드악성코드분석 악성코드분석 안드로이드악성코드정적분석 APK 추출 #1 adb 명령 안드로이드에설치된패키지리스트추출 adb shell pm list packages v0nui-macbook-pro-2:lecture3 v0n$

More information

17장 클래스와 메소드

17장 클래스와 메소드 17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

PowerPoint Presentation

PowerPoint Presentation 자바프로그래밍 1 클래스와메소드심층연구 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 접근제어 class A { private int a; int b; public int c; // 전용 // 디폴트 // 공용 public class Test { public static void main(string args[]) { A obj = new

More information

¾Èµå·ÎÀÌµå ³¹Àå-Åë.PDF

¾Èµå·ÎÀÌµå ³¹Àå-Åë.PDF 시작하기 시작하기 :: 학습목표 :: 이클립스에서새로운 Project를만들수있다 View를디자인하고프로그램에연결할수있다 버튼의 Listener를작성할수있다 작성한 Listener를여러개의버튼이공유하게할수있다 일정한범위의난수를만들수있다 난수의발생빈도를조절할수있다 프로그램에서 ImageView의비트맵을바꿀수있다 1.1 시작하기에앞서 프로그램의기본흐름은입력, 처리,

More information

Network Programming

Network Programming Part 5 확장된 Network Programming 기술 1. Remote Procedure Call 2. Remote Method Invocation 3. Object Request Broker 2. Java RMI

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television

More information

RDS_MAN_NO 도로구간일련번호 NUMBER(12) BSI_INT_SN 기초구간일련번호 NUMBER(10) EQB_MAN_SN 건물군일련번호 NUMBER(10) BULD_SE_CD 건물구분코드 VARCHAR2(1) BULD_MNNM 건물본번 NUMBER(5) BUL

RDS_MAN_NO 도로구간일련번호 NUMBER(12) BSI_INT_SN 기초구간일련번호 NUMBER(10) EQB_MAN_SN 건물군일련번호 NUMBER(10) BULD_SE_CD 건물구분코드 VARCHAR2(1) BULD_MNNM 건물본번 NUMBER(5) BUL 모바일 GIS 실습 A. 실습할프로젝트소개 첫째, 스마트폰또는태블릿 PC의화면에지도를표시하고둘째, 지도를레이어 (Layer) 단위로구성하며셋째, 구성된레이어의색상등의심벌을지정하고넷째, 구성된레이어의라벨을표시하며다섯째, 표시된건물을터치하면터치된건물의속성정보를제공하고여섯째, 현재내위치로지도를이동함 B. 사용할지도데이터살펴보기 레이어이름 설명 형상 SJ _EMD

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드] - Socket Programming in Java - 목차 소켓소개 자바에서의 TCP 프로그램작성방법 주요클래스와메소드 HTTP 프로토콜을이용한예제 에코프로그램 Q/A 에코프로그램 - EchoServer 에코프로그램 - EchoClient TCP Programming 1 소켓소개 IP, Port, and Socket 포트 (Port): 전송계층에서통신을수행하는응용프로그램을찾기위한주소

More information

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter 파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter 클래스의사용법은다음과같다. PrintWriter writer = new PrintWriter("output.txt");

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스와메소드심층연구 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 접근제어 class A { private int a; int b; public int c; // 전용 // 디폴트 // 공용 public class Test { public static void main(string args[]) { A obj = new

More information

슬라이드 1

슬라이드 1 13 장. 커스텀뷰개발 API 에서제공하는뷰를그대로이용하면서약간변형시킨뷰 여러뷰를합쳐서한번에출력하기위한뷰 기존 API 에전혀존재하지않는뷰 public class MyView extends TextView { public class MyView extends ViewGroup { public class MyView extends View { 커스텀뷰를레이아웃

More information

콘텐츠 PowerPoint 디자인

콘텐츠 PowerPoint 디자인 서비스 / 스레드 /DB 최 민 서비스 Service 안드로이드는서비스에게비활성액티비티보다높은우선순위부여 시스템이리소스를필요로할때서비스가종료될가능성은적음 서비스가종료되었더라도리소스가충분해지면즉시재시작 GUI 없이실행 Activity, Broadcast receiver와같이애플리케이션프로세스의메인쓰레드내에서실행 좋은반응성을가지려면시간이많이드는처리 ( 네트워크조회등

More information

Microsoft PowerPoint - 4주차_Android_UI구현.ppt [호환 모드]

Microsoft PowerPoint - 4주차_Android_UI구현.ppt [호환 모드] Android UI 구현 학습목표 교육목표 Android application 구성요소 Activity Layout UI 설계 Linear Layout 구현 Android application 구성요소 (1) () Application 구성요소 AndroidManifest.xml Android application 구성요소 (2) 구성요소 기능 Activity

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 상속 배효철 th1g@nate.com 1 목차 상속개념 클래스상속 부모생성자호출 메소드재정의 final 클래스와 final 메소드 protected 접근제한자 타입변환과다형성 추상클래스 2 상속개념 상속 (Inheritance) 이란? 현실세계 : 부모가자식에게물려주는행위 부모가자식을선택해서물려줌 객체지향프로그램 : 자식 ( 하위, 파생 ) 클래스가부모 (

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr 오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2 디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3 이클립스에서디버깅 4 이클립스에서디버깅 5 이클립스의디버깅명령어 6 예외처리

More information

안드로이드2_14

안드로이드2_14 .,,,,,. 11...,,,.,.,.,. Chapter 14. force feedback.., getsystemservice. String service_name = Context.SENSOR_SERVICE; SensorManager sensormanager = (SensorManager)getSystemService(service_name);. Sensor.,,,.

More information

Microsoft PowerPoint - 03-TCP Programming.ppt

Microsoft PowerPoint - 03-TCP Programming.ppt Chapter 3. - Socket in Java - 목차 소켓소개 자바에서의 프로그램작성방법 주요클래스와메소드 HTTP 프로토콜을이용한예제 에코프로그램 에코프로그램 - EchoServer 에코프로그램 - EchoClient Q/A 1 1 소켓소개 IP,, and Socket 포트 (): 전송계층에서통신을수행하는응용프로그램을찾기위한주소 소켓 (Socket):

More information

JMF3_심빈구.PDF

JMF3_심빈구.PDF JMF JSTORM http://wwwjstormpekr Issued by: < > Revision: Document Information Document title: Document file name: Revision number: Issued by: JMF3_ doc Issue Date:

More information

슬라이드 1

슬라이드 1 핚국산업기술대학교 제 14 강 GUI (III) 이대현교수 학습안내 학습목표 CEGUI 라이브러리를이용하여, 게임메뉴 UI 를구현해본다. 학습내용 CEGUI 레이아웃의로딩및렌더링. OIS 와 CEGUI 의연결. CEGUI 위젯과이벤트의연동. UI 구현 : 하드코딩방식 C++ 코드를이용하여, 코드내에서직접위젯들을생성및설정 CEGUI::PushButton* resumebutton

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

안드로이드애플리케이션과통합하는데는자바가편하므로대표적인두가지라이브러리를비교해보자. 자바 ID3 태그라이브러리 jaudiotagger ID3v1, ID3v1.1, Lyrics3v1, Mp3, Mp4 (Mp4 오디오, M4a 지원범위 Lyrics3v2, ID3v2.2, ID

안드로이드애플리케이션과통합하는데는자바가편하므로대표적인두가지라이브러리를비교해보자. 자바 ID3 태그라이브러리 jaudiotagger ID3v1, ID3v1.1, Lyrics3v1, Mp3, Mp4 (Mp4 오디오, M4a 지원범위 Lyrics3v2, ID3v2.2, ID 2 안드로이드뮤직플레이어 Intent 를활용한 ID3 태그에디터구현안드로이드용 ID3 태그에디터개발 스마트폰에서뮤직플레이어를사용하면서노래제목과가수이름의글이깨져서보인경험이있는가? 필자는 MP3 의메타정보인 ID3 태그를편집할수있는에디터를만들어사용자의불편을개선하는애플리케이션을만들어배포하고있다. 이번호에서는 ID3 태그에디터를만들어보면서안드로이드에서음악정보를수정할수있는방법을알아보자.

More information

헬로, 안드로이드 7 주차 멀티미디어 강대기동서대학교컴퓨터정보공학부

헬로, 안드로이드 7 주차 멀티미디어 강대기동서대학교컴퓨터정보공학부 헬로, 안드로이드 7 주차 멀티미디어 강대기동서대학교컴퓨터정보공학부 학습목표 오디오를재생하는방법에대해알아본다. 비디오를재생하는방법에대해알아본다. 스도쿠게임에음향효과를추가해본다. 2D 그래픽을심화학습하기위해, 커스텀뷰에대해학습하고이벤트핸들링과연결해본다. 차례 오디오재생하기 비디오재생하기 스도쿠에음향추가하기 커스텀뷰 이벤트핸들링 요약 퀴즈 연습문제 오디오재생하기

More information

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

(Microsoft Word - \301\337\260\243\260\355\273\347.docx) 내장형시스템공학 (NH466) 중간고사 학번 : 이름 : 문제 배점 점수 1 20 2 20 3 20 4 20 5 10 6 10 7 15 8 20 9 15 합계 150 1. (20 점 ) 다음용어에대해서설명하시오. (1) 정보은닉 (Information Hiding) (2) 캡슐화 (Encapsulation) (3) 오버로딩 (Overloading) (4) 생성자

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 UI 이벤트 Event listener Touch mode Focus handling Notification Basic toast notification Customized toast notification Status bar notification 2 사용자가인터랙션하는특정 View

More information

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345]) 예외와예외클래스 예외처리 514760-1 2016 년가을학기 12/08/2016 박경신 오류의종류 에러 (Error) 하드웨어의잘못된동작또는고장으로인한오류 에러가발생되면 JVM실행에문제가있으므로프로그램종료 정상실행상태로돌아갈수없음 예외 (Exception) 사용자의잘못된조작또는개발자의잘못된코딩으로인한오류 예외가발생되면프로그램종료 예외처리 추가하면정상실행상태로돌아갈수있음

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information

기술문서 작성 XXE Attacks 작성자 : 인천대학교 OneScore 김영성 I. 소개 2 II. 본문 2 가. XML external entities 2 나. XXE Attack 3 다. 점검방법 3 라.

기술문서 작성 XXE Attacks 작성자 : 인천대학교 OneScore 김영성 I. 소개 2 II. 본문 2 가. XML external entities 2 나. XXE Attack 3 다. 점검방법 3 라. 기술문서 14. 11. 10. 작성 XXE Attacks 작성자 : 인천대학교 OneScore 김영성 dokymania@naver.com I. 소개 2 II. 본문 2 가. XML external entities 2 나. XXE Attack 3 다. 점검방법 3 라. Exploit 5 마. 피해 6 III. 결론 6 가. 권고사항 6 I. 소개 가. 역자 본문서는

More information

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드] Google Map View 구현 학습목표 교육목표 Google Map View 구현 Google Map 지원 Emulator 생성 Google Map API Key 위도 / 경도구하기 위도 / 경도에따른 Google Map View 구현 Zoom Controller 구현 Google Map View (1) () Google g Map View 기능 Google

More information

Microsoft PowerPoint - web-part02-ch15-문서객체조작.pptx

Microsoft PowerPoint - web-part02-ch15-문서객체조작.pptx 과목명 : 웹프로그래밍응용교재 : 모던웹을위한 JavaScript Jquery 입문, 한빛미디어 Part2. jquery Ch15. 문서객체조작 2014년 1학기 Professor Seung-Hoon Choi 15 문서객체조작 문서객체조작 자바스크립트만으로문서객체모델을다루려면복잡함 jquery를이용하면쉽게다룰수있다. 이책에서가장중요한부분 15.1 문서객체의클래스속성추가

More information

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas

More information

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

신림프로그래머_클린코드.key

신림프로그래머_클린코드.key CLEAN CODE 6 11st Front Dev. Team 6 1. 2. 3. checked exception 4. 5. 6. 11 : 2 4 : java (50%), javascript (35%), SQL/PL-SQL (15%) : Spring, ibatis, Oracle, jquery ? , (, ) ( ) 클린코드를 무시한다면 . 6 1. ,,,!

More information

Cluster management software

Cluster management software 자바네트워크프로그래밍 (OCJP 국제공인자격취득중심 ) 충북대학교 최민 기본예제 예외클래스를정의하고사용하는예제 class NewException extends Exception { public class ExceptionTest { static void methoda() throws NewException { System.out.println("NewException

More information

Microsoft PowerPoint - hci2-lecture12 [호환 모드]

Microsoft PowerPoint - hci2-lecture12 [호환 모드] Serialization C# Serialization 321190 2012 년가을학기 11/28/2012 박경신 Serializaiton( 직렬화 ) 란객체상태를지속시키거나전송할수있는형식으로변환하는과정으로, Serialization 반대로다시객체로변환하는것을 Deserialization 임 Serialization i 을사용하는이유 객체의상태를저장소에보존했다가나중에똑같은복사본을다시만들기위하거나,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Lab 4 ADT Design 클래스로정의됨. 모든객체들은힙영역에할당됨. 캡슐화 (Encapsulation) : Data representation + Operation 정보은닉 (Information Hiding) : Opertion부분은가려져있고, 사용자가 operation으로만사용가능해야함. 클래스정의의형태 public class Person { private

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 인터페이스 배효철 th1g@nate.com 1 목차 인터페이스의역할 인터페이스선언 인터페이스구현 인터페이스사용 타입변환과다형성 인터페이스상속 디폴트메소드와인터페이스확장 2 인터페이스의역할 인터페이스란? 개발코드와객체가서로통신하는접점 개발코드는인터페이스의메소드만알고있으면 OK 인터페이스의역할 개발코드가객체에종속되지않게 -> 객체교체할수있도록하는역할 개발코드변경없이리턴값또는실행내용이다양해질수있음

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 24 장입출력 이번장에서학습할내용 스트림이란? 스트림의분류 바이트스트림 문자스트림 형식입출력 명령어행에서입출력 파일입출력 스트림을이용한입출력에대하여살펴봅시다. 스트림 (stream) 스트림 (stream) 은 순서가있는데이터의연속적인흐름 이다. 스트림은입출력을물의흐름처럼간주하는것이다. 스트림들은연결될수있다. 중간점검문제 1. 자바에서는입출력을무엇이라고추상화하는가?

More information

PowerPoint Presentation

PowerPoint Presentation 데이터처리프로그래밍 Data Processing Programming 08 객체와클래스 목차 1. 객체와클래스 2. 인스턴스변수, 클래스변수 3. 클래스매직메소드 4. 클래스의상속 데이터처리프로그래밍 (Data Processing Programming) - 08 객체와클래스 3 1. 객체와클래스 객체 Object 객체란존재하는모든것들을의미 현실세계는객체로이루어져있고,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 배효철 th1g@nate.com 1 목차 표준입출력 파일입출력 2 표준입출력 표준입력은키보드로입력하는것, 주로 Scanner 클래스를사용. 표준출력은화면에출력하는메소드를사용하는데대표적으로 System.out.printf( ) 를사용 3 표준입출력 표준출력 : System.out.printlf() 4 표준입출력 Example 01 public static void

More information