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

xml 파싱후 데이터 화면에 불러오기 질문입니다.

0 추천

안녕하세요 이번에 모바일 공부도 할겸 앱을 만들고 있습니다.

asp로 통해 xml문서를 만들긴 했는데..

2주일동안 안드로이드와 연동이 안되어 이렇게 질문 드립니다

주소는 : http://test.asp?in_name=아이유    이런 형식으로 받습니다

이렇게 xml로 뽑아왔을때, 하단 <z:row> 데이터에서 in_start, in_wday, in_day, in_name, in_serial 데이터를 안드로이드 화면에 보여주고 싶습니다.

 안드로이드 화면에는 아래 화면과 같이 뿌려주고 싶습니다

======================

 시작날짜 : in_start

  요일 : in_wday

  날짜 : in_day

  이름 : in_name

시리얼 : in_serail

======================

전문가님 한번만 도와주세요

뭉뭉치 (120 포인트) 님이 2015년 12월 6일 질문

1개의 답변

0 추천

 

        final String xml = "<?xml version=\"1.0\"?><xml><s:Schema id ='Rowset'></s:Schema><rs:data><z:row in_start='string' in_wday='일' in_day='2015-10-25' in_name='아이유' in_serial='4'/></rs:data></xml>";

        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

        try {
            DocumentBuilder builder = factory.newDocumentBuilder();
            InputSource is = new InputSource(new StringReader(xml));
            Document doc = builder.parse(is);

            // Parse
            NodeList nodes0 = doc.getDocumentElement().getElementsByTagName("rs:data");
            Node node0 = nodes0.item(0);
            if(node0 != null) {
                NodeList nodes1 = ((Element)node0).getElementsByTagName("z:row");
                Node node1 = nodes1.item(0);
                if(node1 != null) {
                    Log.d("_xml", "in_start =" + ((Element) node1).getAttribute("in_start"));
                    Log.d("_xml", "in_wday =" + ((Element) node1).getAttribute("in_wday"));
                    Log.d("_xml", "in_day =" + ((Element) node1).getAttribute("in_day"));
                    Log.d("_xml", "in_name =" + ((Element) node1).getAttribute("in_name"));
                    Log.d("_xml", "in_serial =" + ((Element) node1).getAttribute("in_serial"));
                }
            }
        } catch (Exception e) {
            Log.d("_xml", "Xml parse exception: " + e);
        }

 

위와 같이 Xml을 로드하고 하위 Element를 차근차근 찾아나가면 됩니다.

 

버드Y (640 포인트) 님이 2015년 12월 7일 답변
버드Y님이 2015년 12월 7일 수정
감사합니다 ^^
그런데 웹통신을하면서 가져오고 싶은데 어떻게 해야할까요?
final String xml  여기부분에 url를 적으면 되는걸까요?
try{
    String uri = "http://...";
    URL url = new URL(uri);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setRequestMethod("GET");
    connection.setRequestProperty("Accept", "application/xml");

    InputStream is = connection.getInputStream();

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document doc = db.parse(is);

} catch (Exception e) {
    Log.d("_xml", "Xml document loading exception: " + e);
}

서버에 따라 조금 다를수 있겠지만 기본은 위와 같이 요청해서 받아온 inputstream을 parse함수에 넣어주면 됩니다.
...