-
간단한 XML 파싱방법안드로이드/학습&강좌 2011. 5. 28. 11:35
대게 XML 을 파싱할때는 XmlPullParser를 많이 이용한다.
이번에 소개할 내용은 간단한 XML같은 경우 이런 식으로도 파싱이 가능하다는걸 소개 하려고 한다.
일단 XML 을 살펴보자면
이런식의 노드 하나에 값 하나만 가지는 식의 간단한 경우다.
이 XML 은 웹에서 읽어 들이는 형식을 취했는데, 웹에서 XML을 읽어 들일때의 코드를 설명 하겠다.
당연히 Permission 에는 <uses-permission android:name="android.permission.INTERNET"></uses-permission>
추가해 줘야 한다.
이런식의 xml일 경우는 함수 하나면 잘 읽어 들일 수 있다.
private void getNotice() {
String url = "http://192.168.10.2:8080/NootoTalk/showXmlList.action";
HttpGet httpGet = new HttpGet(url);try {
ResponseHandler<String> rh = new BasicResponseHandler();
String responseData = client.execute(httpGet, rh); // XML문서 읽기
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(responseData)));
NodeList record = document.getElementsByTagName("record");
NodeList title = document.getElementsByTagName("title");
NodeList writer = document.getElementsByTagName("writer");
NodeList content = document.getElementsByTagName("content");
NodeList num = document.getElementsByTagName("num");
NodeList date = document.getElementsByTagName("date");
for (int i = 0; i < record.getLength(); i++) {
NootoNoticeDTO dto = new NootoNoticeDTO();
dto.setNooto_title(title.item(i).getFirstChild().getNodeValue());
dto.setNooto_writer(writer.item(i).getFirstChild().getNodeValue());
dto.setNooto_content(content.item(i).getFirstChild().getNodeValue());
dto.setNooto_date(date.item(i).getFirstChild().getNodeValue());
dto.setNooto_num(num.item(i).getFirstChild().getNodeValue());
list.add(dto);
}} catch (Exception e) {
Log.i("disp", "err : " + e.getMessage());
}
}
"http://192.168.10.2:8080/NootoTalk/showXmlList.action";
이 주소는 로컬 피씨에서 불러 들인 거라 이렇다.
ResponseHandler<String> rh = new BasicResponseHandler();
String responseData = client.execute(httpGet, rh); // XML문서 읽기
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(responseData)));
// recode 라는 태그를 가진 값들을 리스트 식으로 받기 위해 NodeList로 선언
NodeList record = document.getElementsByTagName("record");
//노드에 가진 값을 가져올때 item(i).getFirstChild().getNodeValue());
하게 되면 안에 들어있는 내용을 가져 올 수 있다.
이런식의 파싱은 많이 사용하는 편이 아니다. 하지만 간단한 만큼 한번 설명해 보았다.~
NootoNoticeDTO dto = new NootoNoticeDTO();
dto.setNooto_title(title.item(i).getFirstChild().getNodeValue());
dto.setNooto_writer(writer.item(i).getFirstChild().getNodeValue());
dto.setNooto_content(content.item(i).getFirstChild().getNodeValue());
dto.setNooto_date(date.item(i).getFirstChild().getNodeValue());
dto.setNooto_num(num.item(i).getFirstChild().getNodeValue());
list.add(dto);
}
이부분만 이해하면 된다.
대충 이 xml을 파싱해서 만든 화면이다.
UI는 새로 만들기 귀찮은 관계로 예전 것을 이용햇다;
'안드로이드 > 학습&강좌' 카테고리의 다른 글
C2DM 서비스 사용을 위한 준비 (2) 2011.06.12 특이한 UI 구성 소개 (0) 2011.06.11 갤러리를 이용한 커버플로우 만들기 (1) 2011.06.11 DrawArc 를 이용한 원그리기 (0) 2011.06.06 asset 을 이용한 txt 문서 읽기. (0) 2011.05.28 TextWatcher 를 이용한 글입력 제한 하기. (0) 2011.05.22 백키 두번으로 어플 종료 시키는 간단한 방법 (4) 2011.05.22 ANR 을 방지 하기 위한 AsyncTask (1) 2011.05.15 폰에서 웹서버로 파일 전송 하는 방법 (108) 2011.05.15 셀렉트바 // 팝업윈도우를 이용한 셀렉트바 만들기 2부 (0) 2011.05.08 댓글