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



    댓글

COPYRIGHT 2010 EpoNg. ALL RIGHTS RESERVED.