Android Open Source - wxalert Xml Pull Feed Parser






From Project

Back to project page wxalert.

License

The source code is released under:

Apache License

If you think the Android project wxalert listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.creatuity.wxalert;
/*from w w  w .  j  av a2 s  .c  o  m*/
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import android.util.Log;
import android.util.Xml;

public class XmlPullFeedParser extends BaseFeedParser {

  public XmlPullFeedParser(String feedUrl) {
    super(feedUrl);
  }

  public List<Message> parse() {
    List<Message> messages = null;
    XmlPullParser parser = Xml.newPullParser();
    try {
      // auto-detect the encoding from the stream
      parser.setInput(this.getInputStream(), null);
      int eventType = parser.getEventType();
      Message currentMessage = null;
      boolean done = false;
      while (eventType != XmlPullParser.END_DOCUMENT && !done){
        String name = null;
        switch (eventType){
          case XmlPullParser.START_DOCUMENT:
            messages = new ArrayList<Message>();
            break;
          case XmlPullParser.START_TAG:
            name = parser.getName();
            if (name.equalsIgnoreCase(ITEM)){
              currentMessage = new Message();
            } else if (currentMessage != null){
              if (name.equalsIgnoreCase(LINK)){
                currentMessage.setLink(parser.nextText());
              } else if (name.equalsIgnoreCase(DESCRIPTION)){
                currentMessage.setDescription(parser.nextText());
              } else if (name.equalsIgnoreCase(PUB_DATE)){
                currentMessage.setDate(parser.nextText());
              } else if (name.equalsIgnoreCase(TITLE)){
                currentMessage.setTitle(parser.nextText());
              }  
            }
            break;
          case XmlPullParser.END_TAG:
            name = parser.getName();
            if (name.equalsIgnoreCase(ITEM) && currentMessage != null){
              messages.add(currentMessage);
            } else if (name.equalsIgnoreCase(CHANNEL)){
              done = true;
            }
            break;
        }
        eventType = parser.next();
      }
    } catch (Exception e) {
      Log.e("AndroidNews::PullFeedParser", e.getMessage(), e);
      throw new RuntimeException(e);
    }
    return messages;
  }
}




Java Source Code List

com.creatuity.wxalert.Alert.java
com.creatuity.wxalert.AndroidSaxFeedParser.java
com.creatuity.wxalert.BaseFeedParser.java
com.creatuity.wxalert.DomFeedParser.java
com.creatuity.wxalert.FeedParserFactory.java
com.creatuity.wxalert.FeedParser.java
com.creatuity.wxalert.MessageList.java
com.creatuity.wxalert.Message.java
com.creatuity.wxalert.ParserType.java
com.creatuity.wxalert.RssHandler.java
com.creatuity.wxalert.SaxFeedParser.java
com.creatuity.wxalert.WeatherAlert.java
com.creatuity.wxalert.XmlPullFeedParser.java