ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 간단한 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는 새로 만들기 귀찮은 관계로 예전 것을 이용햇다;



    TAG

    댓글 18

    • 프로필사진

      client.execute(httpGet, rh); 에서 client부분을 이클립스에 치면 찾을수가 없는데

      다른 객체 아닌가요?

      2011.07.12 20:50
    • 프로필사진

      이부분을 사용하기 위해선 위에 jar 파일이 필요합니다. jar파일에 대한 설명을 빼먹었네요 지적해주셔서 감사합니다 ~(__)

      2011.07.13 20:23 신고
    • 프로필사진

      지금 파싱에 대해 공부중인데 풀소스를 구할 수 없을까요??
      메일 주소는 jung2394@gmail.com 입니다. 귀찮게 해드려 죄송합니다.

      2011.09.04 11:49
    • 프로필사진

      비밀댓글입니다

      2011.09.19 17:35
    • 프로필사진

      저두 지금 파싱 공부중인대 풀소스 부탁드립니다.

      ggoma2404@naver.com 부탁드립니다

      2011.11.07 12:54
    • 프로필사진

      풀소스좀 부탁드릴게요..

      2011.11.14 16:14
    • 프로필사진

      비밀댓글입니다

      2011.12.23 00:18
    • 프로필사진

      비밀댓글입니다

      2012.04.09 17:04
    • 프로필사진

      비밀댓글입니다

      2012.08.03 14:20
    • 프로필사진

      삼주째.. 안되고 있어여.. 제발 부탁드립니다.. 풀소스좀.. ㅠㅠ

      2ne4dream@naver.com

      2012.10.05 20:34
    • 프로필사진

      비밀댓글입니다

      2013.01.11 16:23
    • 프로필사진

      비밀댓글입니다

      2013.01.29 15:23
    • 프로필사진

      1주일간 구글링하며 엄청 찾다가 드디에 제가 원하는 코드입니다.
      너무 감사드리고...풀 소스 부탁좀 드려도 될까요??
      멜주소 dnrudwjd7@naver.com입니다. 간절히 부탁드립니다.ㅜㅜ

      2013.03.25 11:10
    • 프로필사진

      찾고있었던 소스입니다.. 프로젝트파일좀주실수있으신가요?
      steady1547@nate.com 입니다 부탁드려요!ㅠ

      2013.08.10 16:56
    • 프로필사진

      찾고있었던 소스입니다.. 프로젝트파일좀주실수있으신가요?
      steady1547@nate.com 입니다 부탁드려요!ㅠ

      2013.08.10 16:56
    • 프로필사진

      비밀댓글입니다

      2013.12.17 15:44
    • 프로필사진

      client, list 에 관한 설명도 없고 jar에 대한 설명도 없습니다. 위의 소스만으로는 아무것도 할수 없는 엉터리 소스입니다. client가 어떤 객체인건지 list가 어떤 객체인건지 설명이 전혀 없어 사용할수 없습니다. jar에 대한 설명도 천혀 없습니다. 파일만 첨부하고 그에대한 설명이 없어 사용할수 없습니다.

      2014.04.29 10:33
    • 프로필사진

      찾고 있던 소스인데 프로젝트 파일좀 부탁드릴게요ㅠㅠ
      보시면 아래 메일로 좀 보내 주시면 감사하겠습니다 ㅠㅠ
      ehdgus4119@naver.com

      2015.04.05 18:57
COPYRIGHT 2010 EpoNg. ALL RIGHTS RESERVED.