Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/*
 * For license please see accompanying LICENSE.txt file (available also at http://www.xmlpull.org/).
 * According to www.xmlpull.org, this code is in the public domain.
 */

import java.io.IOException;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

public class Main {
    public static boolean nextStartTagInsideTree(final XmlPullParser pp, final String tagNamespace,
            final String tagName) throws XmlPullParserException, IOException {
        if (tagNamespace == null && tagName == null)
            throw new IllegalArgumentException(
                    "namespace and name argument can not be both null:" + pp.getPositionDescription());

        if (pp.getEventType() != XmlPullParser.START_TAG && pp.getEventType() != XmlPullParser.END_TAG)
            throw new IllegalStateException(
                    "expected START_TAG of parent or END_TAG of child:" + pp.getPositionDescription());

        while (true) {
            final int eventType = pp.next();

            if (eventType == XmlPullParser.START_TAG) {
                final String name = pp.getName();
                final String namespace = pp.getNamespace();
                boolean matches = (tagNamespace != null && tagNamespace.equals(namespace))
                        || (tagName != null && tagName.equals(name));
                if (matches)
                    return true;

                skipSubTree(pp);
                pp.require(XmlPullParser.END_TAG, namespace, name);
            } else if (eventType == XmlPullParser.END_TAG) {
                return false;
            }
        }
    }

    public static void next(final XmlPullParser pp) throws XmlPullParserException, IOException {
        skipSubTree(pp);
        pp.next();
    }

    /**
     * Skip sub tree that is currently porser positioned on. <br>
     * NOTE: parser must be on START_TAG and when funtion returns parser will be positioned on corresponding END_TAG
     */
    public static void skipSubTree(final XmlPullParser pp) throws XmlPullParserException, IOException {
        pp.require(XmlPullParser.START_TAG, null, null);

        int level = 1;
        while (level > 0) {
            final int eventType = pp.next();
            if (eventType == XmlPullParser.END_TAG)
                --level;
            else if (eventType == XmlPullParser.START_TAG)
                ++level;
        }
    }

    public static void require(final XmlPullParser pp, final String tagName)
            throws XmlPullParserException, IOException {
        pp.require(XmlPullParser.START_TAG, null, tagName);
    }
}