Code/Android

안드로이드 코딩 : 트위터 XML Parse ( 회원 정보 )

sidcode 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. 한글 읽어 오는부분에서 한글자만 읽어와짐.... 원인은 알고있지만.. 일단 놀자!!!