안드로이드 초반에 공부할때 만든 버전이라
내용이 허접합니다..
단 xml 파싱에 대한 것을 볼수 있다는 장점!!
완성도가 높지는 않으니.. 필요하신분은 더 꾸며서 쓰세연~
=========================
Money.java
=========================
package com.androidhuman.money;
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.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class Money extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final TextView txtDate = (TextView)findViewById(R.id.txtDate);
final TextView txtMoney = (TextView)findViewById(R.id.txtMoney);
Button btnMoney = (Button)findViewById(R.id.btnMoney);
btnMoney.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
/* Create a URL we want to load some xml-data from. */
URL url = new URL("http://www.naver.com/include/timesquare/widget/exchange.xml");
/* Get a SAXParser from the SAXPArserFactory. */
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
/* Get the XMLReader of the SAXParser we created. */
XMLReader xr = sp.getXMLReader();
/* Create a new ContentHandler and apply it to the XML-Reader*/
GetMoneyHandler myMoneyHandler = new GetMoneyHandler();
xr.setContentHandler(myMoneyHandler);
/* Parse the xml-data from our URL. */
xr.parse(new InputSource(url.openStream()));
/* Parsing has finished. */
/* Our ExampleHandler now provides the parsed data to us. */
ParsedMoneyDataSet parsedMoneyDataSet =
myMoneyHandler.getParsedData();
/* Set the result to be displayed in our GUI. */
String temp = parsedMoneyDataSet.toDay();
String year = temp.substring(0, 4);
String month = temp.substring(4, 6);
String day = temp.substring(6, 8);
String hour = temp.substring(8, 10);
String minite = temp.substring(10, 12);
String second = temp.substring(12, 14);
String time = year + "년 " + month + "월 " + day + "일 "
+ hour + "시 " + minite + "분 " + second + "초";
txtDate.setText(time);
txtMoney.setText(parsedMoneyDataSet.toMoney());
} catch (Exception e) {
/* Display any Error to the GUI. */
//tv.setText("Error: " + e.getMessage());
Log.e("Debug Tag", "WeatherQueryError", e);
}
}
});
}
}
================================
GetMoneyHandler.java
================================
package com.androidhuman.money;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import android.util.Log;
public class GetMoneyHandler extends DefaultHandler {
private boolean in_last_update = false;
private boolean in_exchange_count = false;
private boolean in_ename = false;
private boolean in_hname = false;
private boolean in_standard = false;
private boolean in_mname = false;
private ParsedMoneyDataSet myParsedMoneyDataSet = new ParsedMoneyDataSet();
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
String str = new String(ch, start, length);
if(this.in_last_update){
Log.d("last_update", str);
myParsedMoneyDataSet.setLast_update(str);
}
if(this.in_exchange_count){
Log.d("exchange_count", str);
int i = Integer.parseInt(str);
myParsedMoneyDataSet.setExchange_count(i);
}
if(this.in_ename){
Log.d("ename", str);
myParsedMoneyDataSet.setEname(str);
myParsedMoneyDataSet.setVctEname(str);
}
if(this.in_hname){
Log.d("hname", str);
myParsedMoneyDataSet.setHname(str);
myParsedMoneyDataSet.setVctHname(str);
}
if(this.in_standard){
Log.d("standard", str);
myParsedMoneyDataSet.setStandard(str);
myParsedMoneyDataSet.setVctStandard(str);
}
if(this.in_mname){
Log.d("mname", str);
myParsedMoneyDataSet.setMname(str);
myParsedMoneyDataSet.setVctMname(str);
}
//super.characters(ch, start, length);
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
if (localName.equals("last_update")) {
this.in_last_update = false;
}else if (localName.equals("exchange_count")) {
this.in_exchange_count = false;
}else if (localName.equals("ename")) {
this.in_ename = false;
}else if (localName.equals("hname")) {
this.in_hname = false;
}else if (localName.equals("standard")) {
this.in_standard = false;
}else if (localName.equals("m_name")){
this.in_mname = false;
}
//super.endElement(uri, localName, qName);
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
if (localName.equals("last_update")) {
this.in_last_update = true;
}else if (localName.equals("exchange_count")) {
this.in_exchange_count = true;
}else if (localName.equals("ename")) {
this.in_ename = true;
}else if (localName.equals("hname")) {
this.in_hname = true;
}else if (localName.equals("standard")) {
this.in_standard = true;
}else if (localName.equals("m_name")){
this.in_mname = true;
}
//super.startElement(uri, localName, qName, attributes);
}
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
}
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
myParsedMoneyDataSet = new ParsedMoneyDataSet();
//super.startDocument();
}
public ParsedMoneyDataSet getParsedData() {
// TODO Auto-generated method stub
return this.myParsedMoneyDataSet;
//return null;
}
}
================================
ParsedMoneyDataSet.java
================================
package com.androidhuman.money;
import java.util.Vector;
import android.util.Log;
public class ParsedMoneyDataSet {
private String last_update = null;
private int exchange_count = 0;
private String ename = null;
private String hname = null;
private String standard = null;
private String mname = null;
private Vector<String> vct_ename = new Vector<String>();
private Vector<String> vct_hname = new Vector<String>();
private Vector<String> vct_standard = new Vector<String>();
private Vector<String> vct_mname = new Vector<String>();
public void setVctEname(String ename){
this.vct_ename.add(ename);
}
public void setVctHname(String hname){
this.vct_hname.add(hname);
}
public void setVctStandard(String standard){
this.vct_standard.add(standard);
}
public void setVctMname(String mname){
this.vct_mname.add(mname);
}
public String getLast_update(){
return last_update;
}
public void setLast_update(String last_update){
this.last_update = last_update;
}
public int getExchange_count(){
return exchange_count;
}
public void setExchange_count(int exchange_count){
this.exchange_count = exchange_count;
}
public String getEname(){
return ename;
}
public void setEname(String ename){
this.ename = ename;
}
public String getHname(){
return hname;
}
public void setHname(String hname){
this.hname = hname;
}
public String getStandard(){
return standard;
}
public void setStandard(String standard){
this.standard = standard;
}
public String getMname(){
return mname;
}
public void setMname(String mname){
this.mname = mname;
}
public String toDay(){
return last_update;
}
public String toString(){
return "ename =>" + this.ename
+ "\nhname => " + this.hname
+ "\nstandard =>" + this.standard;
}
public String toMoney(){
String temp = "";
int i;
int size = vct_ename.size();
Log.d("size", ""+vct_ename.size());
for(i = 0; i<size-1; i++){
//Log.d("count", ""+i);
temp = temp + "Ename = " + (String)vct_ename.elementAt(i)
+ "\nHname = " + (String)vct_hname.elementAt(i)
+ "\nStandard = " + (String)vct_standard.elementAt(i)
//+ " " + (String)vct_mname.elementAt(i) + "\n\n";
+ "\n\n";
/*
String temp2 = "Ename = " + (String)vct_ename.elementAt(i)
+ "\nHname = " + (String)vct_hname.elementAt(i)
+ "\nStandard = " + (String)vct_standard.elementAt(i)
+ "\n\n";
Log.d("temp", temp2);
*/
}
return temp;
}
}
===============================
main.xml
===============================
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/helpLayout"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:text="환율보기"
android:id="@+id/btnMoney"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:text=""
android:id="@+id/txtDate"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<ScrollView
android:id="@+id/scrMoney"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:text=""
android:id="@+id/txtMoney"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</ScrollView>
</LinearLayout>
============================
AndroidManifest.xml
============================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.androidhuman.money"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Money"
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-sdk android:minSdkVersion="6" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>
'기술자료 > Android' 카테고리의 다른 글
안드로이드 개발어플 서비스~~~~ 테트리스 수정본~!! (1) | 2010.11.26 |
---|---|
유용한 팁 모음 사이트.. (1) | 2010.08.23 |
자작 FTP 프로그램 (7) | 2010.08.13 |
Download Android 1.5 NDK(Native Development Kit) (4) | 2009.09.11 |
윈도우에서 안드로이드 소스 다운로드 받기 (0) | 2009.09.11 |