বাংলায় অ্যান্ড্রয়েড সহায়িকা - Bangla Android Guide

আপনার কাছে গুরুত্বপূর্ন নয় এমন ট্যাগগুলো এড়িয়ে (স্কিপ) যান

XML পার্স করার ধাপ যা উপরে আলোচনা করা হয়েছে তার মধ্যে একটি হচ্ছে পার্সারের যে ট্যাগে আগ্রহ নেই সেগুলো এড়িয়ে যাওয়া। এখানে পার্সারের skip() পদ্ধতি দেয়া আছে:

private void skip(XmlPullParser parser) throws XmlPullParserException, IOException {
    if (parser.getEventType() != XmlPullParser.START_TAG) {
        throw new IllegalStateException();
    }
    int depth = 1;
    while (depth != 0) {
        switch (parser.next()) {
        case XmlPullParser.END_TAG:
            depth--;
            break;
        case XmlPullParser.START_TAG:
            depth++;
            break;
        }
    }
 }

এভাবে এটা কাজ করে:

  • এটা একটি ব্যতিক্রমকে ছেড়ে দেয় যদি চলতি ইভেন্ট একটি START_TAG না হয়।

  • এটা START_TAG এবং END_TAG এর সাথে ম্যাচ করা সকল ইভেন্ট ব্যবহার করে।

  • এটা নিশ্চিত করতে যে এটা সঠিক END_TAG এ বন্ধ করে এবং আসল START_TAG এর পরে প্রথম যে ট্যাগের মুকোমুখি হয় সেটাতে নয়, এটা নেস্টিং ডেপথের ট্র্যাক ধরে রাখে।

তাই যদি চলতি এলিমেন্টের নেস্টেড এলিমেন্ট থাকে, depth এর ভ্যালু ০ হবে না যতক্ষন না পার্সার আসল START_TAG এবং এর ম্যাচ করা END_TAG এর মধ্যে সকল ইভেন্ট ব্যবহার করে। উাদহরণস্বরূপ, কীভাবে পার্সার < author> এলিমেন্ট ছেড়ে দেয় তা বিবেচনা করা যার ২ নেস্টেড এলিমেন্ট আছে, < name>এবং < uri>:

  • while লুপের মধ্য দিয়ে প্রথমবার, < author>এর পর পার্সার যে ট্যাগের মুখোমুখি হয় তা হচ্ছে < name>এর জন্য START_TAG । depth এর জন্য ভ্যালু বেড়ে ২ হবে।

  • while লুপের মধ্য দিয়ে দ্বিতীয়বার, পরবর্তী ট্যাগ পার্সার যার মুখোমুখি হয় তা হচ্ছে END_TAG < /name>। depth এর জন্য ভ্যালু কমে ১ হবে।

  • while লুপের মধ্য দিয়ে তৃতীয়বার, পরবর্তী ট্যাগ পার্সার যার মুখোমুখি হয় তা হচ্ছে START_TAG < /uri>। depth এর জন্য ভ্যালু বেড়ে ২ হবে।

  • while লুপের মধ্য দিয়ে চতুর্থবার, , পরবর্তী ট্যাগ পার্সার যার মুখোমুখি হয় তা হচ্ছে END_TAG < /uri>। depth এর জন্য ভ্যালু কমে ১ হবে।

  • while লুপের মধ্য দিয়ে পঞ্চমবার এবং শেষবার, পরবর্তী ট্যাগ পার্সার যার মুখোমুখি হয় তা হচ্ছে END_TAG < /author>। depth এর জন্য ভ্যালু কমে ০ হবে, এটা নির্দেশ করতে যে < author> এলিমেন্টকে সফলার সাথে স্কিপ করা হয়েছে।