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> এলিমেন্টকে সফলার সাথে স্কিপ করা হয়েছে।