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; } }