44caaf7 7 years ago
1 contributor
70 lines | 2.243kb
package com.yc.rss.radio;

import android.util.Xml;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

public class RadioXmlParser {
    // We don't use namespaces
    private static final String ns = null;

    public List parse(InputStream in) throws XmlPullParserException, IOException {
        try {
            XmlPullParser parser = Xml.newPullParser();
            parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
            parser.setInput(in, null);
            parser.nextTag();
            return readFeed(parser);
        } finally {
            in.close();
        }
    }

    private List readFeed(XmlPullParser parser) throws XmlPullParserException, IOException {
        List entries = new ArrayList();
        Entry entry = new Entry("a","b","c","d");

        parser.require(XmlPullParser.START_TAG, ns, "channel_list");
        while (parser.next() != XmlPullParser.END_TAG) {
            if (parser.getEventType() != XmlPullParser.START_TAG) {
                continue;
            }
            String name = parser.getName();
            // Starts by looking for the item tag
            if (name.equals("channel")) {

                //entries.add(entry.readEntry(parser));
                entries = readFeedChannel(parser);
            } else {
                entry.skip(parser);
            }
        }
        return entries;
    }
    private List readFeedChannel(XmlPullParser parser) throws XmlPullParserException, IOException {
        List entries = new ArrayList();
        Entry entry = new Entry("a","b","c","d");

        parser.require(XmlPullParser.START_TAG, ns, "channel");
        while (parser.next() != XmlPullParser.END_TAG) {
            if (parser.getEventType() != XmlPullParser.START_TAG) {
                continue;
            }
            String name = parser.getName();
            // Starts by looking for the item tag
            if (name.equals("item")) {

                entries.add(entry.readItem(parser));
            } else {
                entry.skip(parser);
            }
        }
        return entries;
    }
}