안녕하세요 졸작 준비중인 학생이구요.

현재 제 mysql에 있는 정보를 안드로이드로 불러오는 것을 공부중입니다.

mysql에 있는정보를 xml로 부르는데 성공했구요.

xml을 안드로이드로 파싱하는 중인대.

방법은 DOM으로 하고있는대.

일단 소스는 이렇습니다.

XMLParsingDOMExample.java

[소스]

package com.androidpeople.xml.parsing;

import java.net.URL;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;

public class XMLParsingDOMExample extends Activity {

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  /** Create a new layout to display the view */
  LinearLayout layout = new LinearLayout(this);
  layout.setOrientation(1);

  /** Create a new textview array to display the results */
  TextView uid[];
  TextView title[];
  TextView content[];
  TextView link[];

  try {

   URL url = new URL(
     "http://203.241.246.113/aa.xml");
   DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
   DocumentBuilder db = dbf.newDocumentBuilder();
   Document doc = db.parse(new InputSource(url.openStream()));
   doc.getDocumentElement().normalize();

   NodeList nodeList = doc.getElementsByTagName("root");

   /** Assign textview array lenght by arraylist size */
   uid = new TextView[nodeList.getLength()];
   title = new TextView[nodeList.getLength()];
   content = new TextView[nodeList.getLength()];
   link = new TextView[nodeList.getLength()];

   for (int i = 0; i < nodeList.getLength(); i++) {

    Node node = nodeList.item(i);

    uid[i] = new TextView(this);
    title[i] = new TextView(this);
    content[i] = new TextView(this);
    link[i] = new TextView(this);

    Element fstElmnt = (Element) node;
    NodeList uidList = fstElmnt.getElementsByTagName("uid");
    Element uidElement = (Element) uidList.item(0);
    uidList = uidElement.getChildNodes();
    uid[i].setText("번호 = "
      + ((Node) uidList.item(0)).getNodeValue());

    NodeList titleList = fstElmnt.getElementsByTagName("title");
    Element titleElement = (Element) titleList.item(0);
    titleList = titleElement.getChildNodes();
    title[i].setText("제목 = "
      + ((Node) titleList.item(0)).getNodeValue());

    NodeList contentList = fstElmnt.getElementsByTagName("content");
    Element contentElement = (Element) contentList.item(0);
    contentList = contentElement.getChildNodes();
    content[i].setText("내용 = "
      + ((Node) contentList.item(0)).getNodeValue());
    
    NodeList linkList = fstElmnt.getElementsByTagName("link");
    Element linkElement = (Element) linkList.item(0);
    linkList = linkElement.getChildNodes();
    link[i].setText("이미지 = "
      + ((Node) linkList.item(0)).getNodeValue());

    layout.addView(uid[i]);
    layout.addView(title[i]);
    layout.addView(content[i]);
    layout.addView(link[i]);

   }
  } catch (Exception e) {
   System.out.println("XML Pasing Excpetion = " + e);
  }

  /** Set the layout view to display */
  setContentView(layout);

 }
}

[소스끝]

 

xml소스는

aa.xml

[소스]

<?xml version='1.0' encoding='euc-kr'?> <root><word><uid>1</uid><title>test</title>

<content>test</content><link>images/Lighthouse.jpg</link></word><word><uid>2</uid><title>test2</title>

<content>test2</content><link>images/Hydrangeas.jpg</link></word><word><uid>3</uid><title>dd</title>

<content>내용 입력dd</content><link>images/dd.JPG</link></word><word><uid>4</uid><title>ㅇㅇ</title>

<content>내용 입력ㅇㅇ</content><link>images/그림1.png</link></word><word><uid>5</uid><title>dd</title>

<content>내용 입력dd</content><link>images/dd.JPG</link></word></root>

[소스끝]

 

이렇습니다. 결과물이 이렇게 나옵니다.

1번에 해당하는 디비정보만 불러와져요.. 모두 불러올려면 어떻게 변경해야할까요.?