검색결과 리스트
글
package test.day05.xmlparser; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import android.os.Handler; import android.widget.Toast; public class XMLManager { private String xml; //다운로드한 xml private String urlAddr; //다운로드할 url 주소 private Handler handler;//메인 스레드의 핸들러 //다운로드 성공 실패 여부에 대한 상수 static final int DOWN_SUCCESS=0; static final int DOWN_FAIL=1; //파싱할 테그의 종류가 한가지 읽때 호출하는 메소드 public ArrayListparseForList(String tag,String xml){ ArrayList list=new ArrayList (); try{ DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder= factory.newDocumentBuilder(); //xml 정보를 담고있는 String 객체를 InputStream 으로 변환 InputStream is= new ByteArrayInputStream(xml.getBytes()); //파싱해서 Document 형태로 변환 Document doc=documentBuilder.parse(is); Element element=doc.getDocumentElement(); //읽어올 테그명 정하기 NodeList itemsK=element.getElementsByTagName(tag); //읽어온 자료의 갯수 int n=itemsK.getLength(); //반복문 돌면서 모든 데이터 읽어오기 for(int i=0; i < n ; i++){ //읽어온 자료에서 해당인덱스 번호를 이용해서 읽어온다. Node itemK=itemsK.item(i); Node textK=itemK.getFirstChild(); //해당 노드에서 문자열 읽어오기 String itemNameK=textK.getNodeValue(); list.add(itemNameK); } }catch(Exception e){} return list; } //파싱할 태그의 종류가 여러가지 일때 호출하는 메소드 public ArrayList > parseForList(String[] tags,String xml){ ArrayList > list= new ArrayList >(); try{ DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder= factory.newDocumentBuilder(); //xml 정보를 담고있는 String 객체를 InputStream 으로 변환 InputStream is= new ByteArrayInputStream(xml.getBytes()); //파싱해서 Document 형태로 변환 Document doc=documentBuilder.parse(is); Element element=doc.getDocumentElement(); //읽어올 데이터의 갯수 int tagSize=tags.length; NodeList[] nodeList=new NodeList[tagSize]; for(int i=0; i < tagSize ; i++){ nodeList[i]=element.getElementsByTagName(tags[i]); } //읽어온 자료의 수 int dataSize=nodeList[0].getLength(); Node[] nodeFirst=new Node[tagSize]; Node[] nodeSecond=new Node[tagSize]; String[] nodeValue=new String[tagSize]; for(int i=0; i < dataSize ; i++){ for(int j=0; j < tagSize ; j++){ nodeFirst[j]=nodeList[j].item(i); } for(int j=0; j < tagSize ; j++){ nodeSecond[j]=nodeFirst[j].getFirstChild(); } for(int j=0; j < tagSize ; j++){ nodeValue[j]=nodeSecond[j].getNodeValue(); } HashMap map=new HashMap (); for(int j=0; j < tagSize; j++){ map.put(tags[j], nodeValue[j]); } list.add(map); } }catch(Exception e){ } return list; } //다운로드 하는 메소드 public void downLoadXML(Handler handler,String urlAddr){ this.handler=handler; this.urlAddr=urlAddr; //다운로드하는 스레드 시작하기 new DownThread().start(); } //다운로드할 스레드를 생성할 InnerClass class DownThread extends Thread{ public void run(){ //웹서버에 접속해서 응답하는 xml 문서를 읽어온다. StringBuilder builder=new StringBuilder(); try{ URL url=new URL(urlAddr); HttpURLConnection conn= (HttpURLConnection)url.openConnection(); if(conn != null){//정상접속이 되었다면 conn.setConnectTimeout(10000);//최대 대기시간10초 conn.setUseCaches(false);//캐쉬사용안함 if(conn.getResponseCode()==HttpURLConnection.HTTP_OK){ //InputStreamReader 객체 얻어오기 InputStreamReader isr= new InputStreamReader(conn.getInputStream()); BufferedReader br=new BufferedReader(isr); //반복문 돌면서 읽어오기 while(true){ String line=br.readLine(); if(line==null)break; //읽어온 문자열을 객체에 저장 builder.append(line); } br.close(); //다운로드한 자료를 문자열로 반환 xml=builder.toString(); //다운로드 성공일때 Hanlder 에 알린다. handler.sendEmptyMessage(DOWN_SUCCESS); }//if conn.disconnect();//연결해제 }//if }catch(Exception e){ //실패일때도 알린다. handler.sendEmptyMessage(DOWN_FAIL); }//try } } //다운로드한 xml 문서를 리턴하는 메소드 public String getXML(){ return xml; } }
'프로그래밍 > ㆍAndroid' 카테고리의 다른 글
[Android].java Alert Dialog - 알럿 다이얼로그 기본 팝업 (0) | 2012.02.11 |
---|---|
[Android].xml Permission 사용하기 - 통신 관련 (0) | 2012.02.11 |
[Android].project BluetoothChat ( 블루투스 채팅 ) (16) | 2012.02.10 |
[Android].class SoundManager ( 사운드 관리 ) (0) | 2012.02.10 |
RECENT COMMENT