Esempio n. 1
0
  @Override
  public List<FeedItem> parse(InputStream input, int maxItems) throws RSSFeedParserException {

    List<FeedItem> result = new ArrayList<FeedItem>();
    XmlPullParser parser = setupParser(input);
    FeedItemBuilder feedItemBuilder = null;
    String tagName;

    try {

      int currentEventType = parser.getEventType();

      while (currentEventType != END_DOCUMENT && result.size() != maxItems) {
        tagName = parser.getName();

        switch (currentEventType) {
          case START_TAG:
            if (ITEM_TAG.equalsIgnoreCase(tagName)) {
              feedItemBuilder = new FeedItemBuilder();
            } else if (feedItemBuilder != null) {
              populateMessageProperty(parser.nextText(), feedItemBuilder, tagName);
            }

            break;

          case END_TAG:
            if (ITEM_TAG.equalsIgnoreCase(tagName)) {
              result.add(feedItemBuilder.getFeedItem());
              feedItemBuilder = null;
            }

            break;

          default:
            break;
        }

        currentEventType = parser.next();
      }

    } catch (XmlPullParserException e) {
      throw new RSSFeedParserException("RSS input stream has wrong content", e);
    } catch (IOException e) {
      throw new RSSFeedParserException("Something wrong with input stream", e);
    }

    return result;
  }
Esempio n. 2
0
  private void populateMessageProperty(
      String value, FeedItemBuilder feedItemBuilder, String tagName) {

    if (LINK_TAG.equalsIgnoreCase(tagName)) {
      feedItemBuilder.setLink(value);

    } else if (DESCRIPTION_TAG.equalsIgnoreCase(tagName)) {
      feedItemBuilder.setDescription(value);

    } else if (PUB_DATE_TAG.equalsIgnoreCase(tagName)) {
      feedItemBuilder.setDate(parseDate(value));

    } else if (TITLE_TAG.equalsIgnoreCase(tagName)) {
      feedItemBuilder.setTitle(value);
    }
  }