ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 안드로이드 코딩 : 트위터 XML Parse ( 회원 정보 )
    Code/Android 2010. 8. 11. 16:56

    1. mini SDK-VERSION
    android 2.1-update1


    2. main code( ShowUser.java )

    package com.TwitterSCKR;


    import java.net.URL;

    import javax.xml.parsers.SAXParser;

    import javax.xml.parsers.SAXParserFactory;

    import org.xml.sax.InputSource;

    import org.xml.sax.XMLReader;

    import android.app.Activity;

    import android.os.Bundle;

    import android.widget.LinearLayout;

    import android.widget.TextView;


    public class ShowUser extends Activity {

    XMLTagReturn xmltr = null;


    @Override

    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    LinearLayout layout = new LinearLayout(this);

    layout.setOrientation(1);


    TextView name[];

    TextView location[];

    TextView description[];


    try {

    SAXParserFactory spf = SAXParserFactory.newInstance();

    SAXParser sp = spf.newSAXParser();

    XMLReader xr = sp.getXMLReader();

    URL xmlUrl = new URL("http://api.twitter.com/1/users/show.xml?screen_name=sidcode");


    MyXMLHandler xmlHd = new MyXMLHandler();

    xr.setContentHandler(xmlHd);

    xr.parse(new InputSource(xmlUrl.openStream()));

    } catch (Exception e) {

    System.out.println(e);

    }


    xmltr = MyXMLHandler.xmltr;


    name = new TextView[xmltr.getName().size()];

    location = new TextView[xmltr.getLocation().size()];

    description = new TextView[xmltr.getDescription().size()];

    for(int i = 0; i < xmltr.getName().size(); i++){

    name[i] = new TextView(this);

    name[i].setText("이름 : " + xmltr.getName().get(i));

    location[i] = new TextView(this);

    location[i].setText("지역 : " + xmltr.getLocation().get(i));

    description[i] = new TextView(this);

    description[i].setText("소개글 : " + xmltr.getDescription().lastIndexOf(description));

    layout.addView(name[i]);

    layout.addView(location[i]);

    layout.addView(description[i]);

    }

    setContentView(layout);


    }

    }



    2. XML Handler ( MyXMLHandler.java )

    package com.TwitterSCKR;


    import org.xml.sax.AttributeList; // <= 이부분실수로 다른 패키지 임폴트해서 몇시간 해메고다님.ㅠㅁ ㅠ

    import org.xml.sax.Attributes;

    import org.xml.sax.SAXException;

    import org.xml.sax.helpers.DefaultHandler;


    public class MyXMLHandler extends DefaultHandler {

    boolean cElement = false;

    String cValue = null;

    public static XMLTagReturn xmltr = null;


    public static XMLTagReturn getXMLTagReturn(){

    return xmltr;

    }


    public static void setXMLTagReturn(XMLTagReturn xmltr){

    MyXMLHandler.xmltr = xmltr;

    }


    public void startElement(String uri, String localName, String tagName, Attributes attribute) throws SAXException{

    cElement = true;


    if(localName.equals("user")){

    xmltr = new XMLTagReturn();

    }

    }


    public void endElement(String uri, String localName, String tagName) throws SAXException {

    cElement = false;


    if(localName.equalsIgnoreCase("name")){

    xmltr.setName(cValue);

    } else if(localName.equalsIgnoreCase("location")) {

    xmltr.setLocation(cValue);

    } else if(localName.equalsIgnoreCase("description")){

    xmltr.setDescription(cValue);

    }

    }


    public void characters(char[] ch, int start, int length) throws SAXException {

    if (cElement) {

    cValue = new String(ch, start, length);

    cElement = false;

    }


    }

    }




    3. ArrayList & Get, set ( XMLTagReturn.java )

    package com.TwitterSCKR;


    import java.util.ArrayList;


    public class XMLTagReturn {

    private ArrayList<String> name = new ArrayList<String>();

    private ArrayList<String> location = new ArrayList<String>();

    private ArrayList<String> description = new ArrayList<String>();

    public ArrayList<String> getName() {

    return name;

    }

    public void setName(String name) {

    this.name.add(name);

    }

    public ArrayList<String> getLocation() {

    return location;

    }

    public void setLocation(String location) {

    this.location.add(location);

    }


    public ArrayList<String> getDescription() {

    return description;

    }


    public void setDescription(String description) {

    this.description.add(description);

    }

    }



    4. AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"

          package="com.TwitterSCKR"

          android:versionCode="1"

          android:versionName="1.0">

        <application android:icon="@drawable/icon" android:label="@string/app_name">

            <activity android:name=".ShowUser"

                      android:label="@string/app_name">

                <intent-filter>

                    <action android:name="android.intent.action.MAIN" />

                    <category android:name="android.intent.category.LAUNCHER" />

                </intent-filter>

            </activity>


        </application>

        <uses-permission android:name="android.permission.INTERNET"></uses-permission>


    </manifest> 



    첫 연결 성공후 기뻐서 소리 질렀음!!!!!

    ps. 한글 읽어 오는부분에서 한글자만 읽어와짐.... 원인은 알고있지만.. 일단 놀자!!!


Designed by Tistory.