본문 바로가기

Android

Xml Parser

1. XMLPULL Download : http://www.xmlpull.org/v1/download/xmlpull_1_0_5.jar

2. main.xml Layout

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

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

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical" >

    <Button

        android:id="@+id/button1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="가져오기" />

    <TextView

        android:id="@+id/textView1"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

3. XMLParseActivity.java

package net.kdgrid.xmlparse;


import java.net.URL;


import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

import android.widget.Toast;


import org.xmlpull.v1.XmlPullParser;

import org.xmlpull.v1.XmlPullParserFactory;


public class XMLParseActivity extends Activity {

private TextView edtResult;

private Button btn;

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        

        edtResult = (TextView)findViewById(R.id.textView1);

        btn = (Button)findViewById(R.id.button1);

        btn.setOnClickListener(new Button.OnClickListener()  {

public void onClick(View v) {

try  {

URL url = new URL("http://192.168.0.62/1/stb.xml");

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();

XmlPullParser parser = factory.newPullParser();

parser.setInput(url.openStream(), "utf-8");

String item = "", itemName = "", itemContents = "";

boolean bSet = false;

int eventType = parser.getEventType();

while (eventType != XmlPullParser.END_DOCUMENT)  {

switch (eventType)  {

case XmlPullParser.START_DOCUMENT:

break;

case XmlPullParser.END_DOCUMENT:

break;

case XmlPullParser.START_TAG:

String tag = parser.getName();

if (tag.equals("teletext"))  {

String sDate = parser.getAttributeValue(null, "date");

itemContents = sDate;

bSet = true;

}

break;

case XmlPullParser.END_TAG:

break;

case XmlPullParser.TEXT:

if (bSet)  {

item = itemContents + " : " + parser.getText() + "\n"; bSet = false;

}

break;

}

eventType = parser.next();

}

edtResult.setText(item);

} catch (Exception e)  {

Toast.makeText(v.getContext(), e.getMessage(), Toast.LENGTH_LONG).show();

}

}

        });

    }

}

4. stb.xml (웹서버)

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

<settop>

  <live>

    <teletext date="201204021210">일본 정부 산하 연구 기관의 대지진 보고서 가운데 일본에서 발생한 거대 쓰나미가 중국 대도시도 강타할 것이라는 내용을 놓고 중국 내에서 논란이 이는 가운데 중국 정부 당국이 진화에 나섰다.</teletext>

  </live>

</settop>