마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

XmlPullParser를 이용한 xml 파싱 질문이요

0 추천

MapActivity.java

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map);
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
    try {
        setUpMapIfNeeded();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (XmlPullParserException e) {
        e.printStackTrace();
    }

}


private void setUpMapIfNeeded() throws IOException, XmlPullParserException {
        if (mMap == null) {
            mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
            mapFragment.getMapAsync(new OnMapReadyCallback() {
                @Override
                public void onMapReady(GoogleMap googleMap) {
                    mMap = googleMap;
                }
            });
            if (mMap != null) {
                setUpMap();
            }
        }
    }

    private void setUpMap() throws XmlPullParserException, IOException {
        XmlPullParser parser = getResources().getXml(R.xml.areadata);

        String tag = null;
        int event_type = parser.getEventType();

        ArrayList<PharmDTO> list = new ArrayList();

        String xpos = null, ypos = null, name = null;
        while (event_type != XmlPullParser.END_DOCUMENT) {
            if (event_type == XmlPullParser.START_TAG) {
                tag = parser.getName();
            } else if (event_type == XmlPullParser.TEXT) {
                /**
                 * 금연구역의 위도,경도, 이름만 가져와본다.
                 */
                if (tag.equals("금연구역명")) {
                    name = parser.getText();
                } else if (tag.equals("위도")) {
                    xpos = parser.getText();
                } else if (tag.equals("경도")) {
                    ypos = parser.getText();
                }
            } else if (event_type == XmlPullParser.END_TAG) {
                tag = parser.getName();
                if (tag.equals("Row")) {
                    PharmDTO entity = new PharmDTO();
                    entity.setXpos(Double.valueOf(xpos));
                    entity.setYpos(Double.valueOf(ypos));
                    entity.setName(name);
                    list.add(entity);
                }
            }
            event_type = parser.next();
        }

        for(PharmDTO entity : list) {
            options = new MarkerOptions();
            options.position(new LatLng(entity.getYpos(), entity.getXpos()));
            options.title(entity.getName());
            options.icon(BitmapDescriptorFactory.fromResource(R.drawable.mylocation));
            mMap.addMarker(options);
        }
    }
}

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

areadata.xml

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

<?xml version="1.0" encoding="utf-8"?>
<root>
    <Row>
        <금연구역명>거북공원</금연구역명>
        <금연구역범위상세>공원면적 전체</금연구역범위상세>
        <시도명>경상남도</시도명>
        <시군구명>김해시</시군구명>
        <금연구역구분>공원</금연구역구분>
        <금연구역지정근거명>국민건강증진법 제9조제4항및제5항</금연구역지정근거명>
        <금연구역면적>25573</금연구역면적>
        <위반과태료>50000</위반과태료>
        <위반신고연락처>055-330-4514</위반신고연락처>
        <소재지도로명주소 />
        <소재지지번주소>경상남도 김해시 내동 1116-2</소재지지번주소>
        <관리기관명>경상남도 김해시청</관리기관명>
        <위도>35.2359329</위도>
        <경도>128.8652152</경도>
        <데이터기준일자>2016-06-10</데이터기준일자>
    </Row>
    <Row>
        <금연구역명>경운공원</금연구역명>
        <금연구역범위상세>공원면적 전체</금연구역범위상세>
        <시도명>경상남도</시도명>
        <시군구명>김해시</시군구명>
        <금연구역구분>공원</금연구역구분>
        <금연구역지정근거명>국민건강증진법 제9조제4항및제5항</금연구역지정근거명>
        <금연구역면적>10555</금연구역면적>
        <위반과태료>50000</위반과태료>
        <위반신고연락처>055-330-4514</위반신고연락처>
        <소재지도로명주소 />
        <소재지지번주소>경상남도 김해시 외동 707</소재지지번주소>
        <관리기관명>경상남도 김해시청</관리기관명>
        <위도>35.2365437</위도>
        <경도>128.853133</경도>
        <데이터기준일자>2016-06-10</데이터기준일자>
    </Row>

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

이런식으로 되어있는데 xml 문서 자체를 읽어오지 못하는건지 지도상에 표시가 안되네요..

몇일 째 구글링 해도 모르겠어서 질문드립니다ㅠ

하라르르 (310 포인트) 님이 2017년 6월 5일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...