কম্পিউটার টিউটোরিয়াল

অ্যান্ড্রয়েডে XMLPullParser ব্যবহার করে XML পার্স করার পদ্ধতি

XMLPullParser দিয়ে অ্যান্ড্রয়েডে XML ডেটা পার্স করা

এই উদাহরণে দেখানো হয়েছে কীভাবে XmlPullParser ব্যবহার করে XML ফাইল থেকে ডেটা পড়ে একটি লিস্টভিউতে দেখাতে হয়।

প্রথম ধাপ: প্রজেক্ট তৈরি করুন

Android Studio-তে File → New Project নির্বাচন করে একটি নতুন প্রজেক্ট তৈরি করুন।

দ্বিতীয় ধাপ: মূল লেআউট ফাইল

res/layout/activity_main.xml এ লিস্টভিউ যোগ করুন:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <ListView
        android:id="@+id/listView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:dividerHeight="1dp" />
</LinearLayout>

তৃতীয় ধাপ: রো লেআউট তৈরি করুন

res/layout/row.xml নামে একটি নতুন লেআউট রিসোর্স ফাইল তৈরি করুন:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="5dip" >
    <TextView
        android:id="@+id/tvName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:textSize="17dp" />
    <TextView
        android:id="@+id/tvDesignation"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/tvName"
        android:layout_marginTop="7dp"
        android:textColor="#343434"
        android:textSize="14dp" />
    <TextView
        android:id="@+id/tvLocation"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/tvDesignation"
        android:layout_alignBottom="@+id/tvDesignation"
        android:layout_alignParentRight="true"
        android:textColor="#343434"
        android:textSize="14dp" />
</RelativeLayout>

চতুর্থ ধাপ: মেইন এক্টিভিটিতে পার্সিং লজিক

src/MainActivity.java এ XML পার্সিংয়ের সম্পূর্ণ কোড:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        try {
            ArrayList<HashMap<String, String>> userList = new ArrayList<>();
            HashMap<String, String> user = new HashMap<>();
            ListView lv = findViewById(R.id.listView);
            
            // assets ফোল্ডার থেকে XML ফাইল পড়া
            InputStream inputStream = getAssets().open("userdetails.xml");
            XmlPullParserFactory parserFactory = XmlPullParserFactory.newInstance();
            XmlPullParser parser = parserFactory.newPullParser();
            parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
            parser.setInput(inputStream, null);
            
            String tag = "", text = "";
            int event = parser.getEventType();
            
            while (event != XmlPullParser.END_DOCUMENT) {
                tag = parser.getName();
                switch (event) {
                    case XmlPullParser.START_TAG:
                        if (tag.equals("user")) {
                            user = new HashMap<>();
                        }
                        break;
                    case XmlPullParser.TEXT:
                        text = parser.getText();
                        break;
                    case XmlPullParser.END_TAG:
                        switch (tag) {
                            case "name": user.put("name", text); break;
                            case "designation": user.put("designation", text); break;
                            case "location": user.put("location", text); break;
                            case "user":
                                if (user != null) userList.add(user);
                                break;
                        }
                        break;
                }
                event = parser.next();
            }
            
            ListAdapter adapter = new SimpleAdapter(MainActivity.this, userList, R.layout.row,
                    new String[]{"name", "designation", "location"},
                    new int[]{R.id.tvName, R.id.tvDesignation, R.id.tvLocation});
            lv.setAdapter(adapter);
        } catch (IOException | XmlPullParserException e) {
            e.printStackTrace();
        }
    }
}

পঞ্চম ধাপ: XML ডেটা ফাইল তৈরি করুন

assets/userdetails.xml ফাইল তৈরি করুন:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <users>
        <user>
            <name>Sehwag</name>
            <designation>Vice Captain</designation>
            <location>Delhi</location>
        </user>
        <user>
            <name>Ashwin</name>
            <designation>Off Spin Bowler</designation>
            <location>Chennai</location>
        </user>
        <user>
            <name>Dhoni</name>
            <designation>Captain</designation>
            <location>Ranchi</location>
        </user>
    </users>
</resources>
নোট: মূল কোডে "loation" লিখা ছিল, এখানে সঠিক "location" করা হয়েছে।

ছষ্ঠ ধাপ: ম্যানিফেস্ট ফাইল

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

অ্যাপ্লিকেশন চালান

ডিভাইস সংযুক্ত করে Run করলে পার্স করা XML ডেটা লিস্টভিউতে দেখাবে।

অ্যান্ড্রয়েডে XMLPullParser ব্যবহার করে XML পার্স করার পদ্ধতি

  1. অ্যান্ড্রয়েডে Firebase Messaging ব্যবহারের পদ্ধতি

  2. অ্যান্ড্রয়েড টুলবারে SearchView ব্যবহার করার পদ্ধতি

  3. অ্যান্ড্রয়েডে JSONObject ব্যবহার করে JSON পার্স করা

  4. Android-এ Volley লাইব্রেরি ব্যবহার করে JSON পার্স করার পদ্ধতি