Android xml parsing

788 views
656 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
788
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Android xml parsing

  1. 1. Android XML ParsingS.O.LAB Develop by Oracleon
  2. 2. 웹 요청1Http 클라이언트 만들기 1. URL 객체 생성 2. openConnection() 메소드 호출 3. HttpURLConnection 객체형으로 casting 후 데이터 교환URL url = new URL(urlStr);HttpURLConnection conn = (HttpURLConnection)url.openConnection();if (conn != null) { conn.setConnectTimeout(10000); conn.setRequestMethod("GET"); conn.setDoInput(true); conn.setDoOutput(true); int resCode = conn.getResponseCode(); if (resCode == HttpURLConnection.HTTP_OK) { BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())) ; String line = null; while(true) { line = reader.readLine(); if (line == null) { break; } output.append(line + "n"); } reader.close(); conn.disconnect(); }
  3. 3. 웹 요청1 메소드 설명1. setRequestMethod(“GET”) // Get방식 요청설정2. setDoInput(),setDoOutput() // 객체의 입출력이 가능하로록 설정3. getResposeCode() // 이시점에 웹서버에 페이지 요청시작4. 응답코드 HTTP_OK : 정상 / HTTP_NOT_FOUND :페이지없음5. readLine()은 BufferedReader클래스에 정의되어 있다.6. HttpURLConnection객체인 conn을 InputStreamReaderr객체로 만든후 BufferedReader 클래스형 객체로 만든다.BufferedReader reader = new BufferedReader( new InputStreamReader(conn.getInputStream())) ;String line = reader.readLine();
  4. 4. DOM ParserDOM : 트리형식으로 전체구조 파악후 정보 추출,메모리 사용높음, 고성능SAX : 순차적으로 문서를 읽으면서 차례대로 추출, 메모리 사용낮음, 느림 import javax.xml.parsers.*; import org.w3c.dom.*;DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();InputStream istream = new ByteArrayInputStream(xml.getBytes("utf-8"));Document doc = builder.parse(istream);Element order = doc.getDocumentElement();NodeList items = order.getElementsByTagName("item");Node item = items.item(0);Node text = item.getFirstChild();String ItemName = text.getNodeValue();mResult.setText("주문 항목 : " + ItemName);
  5. 5. DOM ParserDocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();- 추상클래스이므로 직접생성할수 없고 newInstace 정적메소드로 생성한다.DocumentBuilder builder = factory.newDocumentBuilder();실제파싱을 할 builder 객체도 정적메소드 newDocumnetBuilder() 로 생성한다. String xml = "<?xml version="1.0" encoding="utf-8"?>n" + "<order><item>Mouse</item></order>";InputStream istream = new ByteArrayInputStream(xml.getBytes("utf-8"));Document doc = builder.parse(istream);parse메소드는 스트림을 분석하여 메모리에 트리형태로 전개해 놓는다.이후 Document객체의 메소드를 이용하여 요소들을 빨리 읽을수 있다.Element order = doc.getDocumentElement();NodeList items = order.getElementsByTagName("item");Node item = items.item(0);Node text = item.getFirstChild();String ItemName = text.getNodeValue();
  6. 6. DOM Parser String xml = "<?xml version="1.0" encoding="utf-8"?>n" + "<order>" + "<item Maker="Samsung" Price="23000">Mouse</item>" + "<item Maker="LG" Price="12000">KeyBoard</item>" + "<item Price="156000" Maker="Western Digital">HDD</item>" + "</order>";DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();InputStream istream = new ByteArrayInputStream(xml.getBytes("utf-8"));Document doc = builder.parse(istream);Element order = doc.getDocumentElement();NodeList items = order.getElementsByTagName("item");String Result = "";for (int i = 0; i < items.getLength();i++) { Node item = items.item(i); Node text = item.getFirstChild(); String ItemName = text.getNodeValue(); Result += ItemName + " : "; NamedNodeMap Attrs = item.getAttributes(); for (int j = 0;j < Attrs.getLength(); j++) { Node attr = Attrs.item(j); Result += (attr.getNodeName() + " = " + attr.getNodeValue() + " "); } Result += "n"; } mResult.setText("주문 목록n" + Result);}
  7. 7. SAX parseHttp 클라이언트 만들기1. URL 객체 생성2. openConnection() 메소드 호출3. HttpURLConnection 객체형으로 casting 후 데이터 교환

×