Android Open Source - issue-parser R S S Parser






From Project

Back to project page issue-parser.

License

The source code is released under:

GNU General Public License

If you think the Android project issue-parser 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

/*
 * Copyright (C) 2010 A. Horn//from w ww . ja v a  2 s. c  om
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.mcsoxford.rss;

import java.io.IOException;
import java.io.InputStream;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;

/**
 * Internal thread-safe RSS parser SPI implementation.
 * 
 * @author Mr Horn
 */
class RSSParser implements RSSParserSPI {

  private final RSSConfig config;

  /* Internal constructor for RSSReader */
  RSSParser(RSSConfig config) {
    this.config = config;
  }

  /**
   * Parses input stream as RSS feed. It is the responsibility of the caller to
   * close the RSS feed input stream.
   * 
   * @param feed RSS 2.0 feed input stream
   * @return in-memory representation of RSS feed
   * @throws RSSFault if an unrecoverable parse error occurs
   */
  @Override
  public RSSFeed parse(InputStream feed) {
    try {
      // Since SAXParserFactory implementations are not guaranteed to be
      // thread-safe, a new local object is instantiated.
      final SAXParserFactory factory = SAXParserFactory.newInstance();

      // Support Android 1.6 (see Issue 1)
      factory.setFeature("http://xml.org/sax/features/namespaces", false);
      factory.setFeature("http://xml.org/sax/features/namespace-prefixes", true);

      final SAXParser parser = factory.newSAXParser();

      return parse(parser, feed);
    } catch (ParserConfigurationException e) {
      throw new RSSFault(e);
    } catch (SAXException e) {
      throw new RSSFault(e);
    } catch (IOException e) {
      throw new RSSFault(e);
    }
  }

  /**
   * Parses input stream as an RSS 2.0 feed.
   * 
   * @return in-memory representation of an RSS feed
   * @throws IllegalArgumentException if either argument is {@code null}
   */
  private RSSFeed parse(SAXParser parser, InputStream feed)
      throws SAXException, IOException {
    if (parser == null) {
      throw new IllegalArgumentException("RSS parser must not be null.");
    } else if (feed == null) {
      throw new IllegalArgumentException("RSS feed must not be null.");
    }

    // SAX automatically detects the correct character encoding from the stream
    // See also http://www.w3.org/TR/REC-xml/#sec-guessing
    final InputSource source = new InputSource(feed);
    final XMLReader xmlreader = parser.getXMLReader();
    final RSSHandler handler = new RSSHandler(config);

    xmlreader.setContentHandler(handler);
    xmlreader.parse(source);

    return handler.feed();
  }

}




Java Source Code List

de.dom.drupalit.IssueDetail.java
de.dom.drupalit.IssueParser.java
de.dom.drupalit.Main.java
de.dom.drupalit.Utils.java
de.dom.drupalit.adapters.FeedAdapter.java
de.dom.drupalit.backgroundservice.AppService.java
de.dom.drupalit.backgroundservice.OnAlarmReceiver.java
de.dom.drupalit.backgroundservice.OnBootReceiver.java
de.dom.drupalit.backgroundservice.WakefulIntentService.java
de.dom.drupalit.listeners.RSSItemClickListener.java
de.dom.drupalit.objects.Comment.java
de.dom.drupalit.objects.Issue.java
de.dom.drupalit.tabs.IssueListActivity.java
de.dom.drupalit.tabs.TabAllIssues.java
de.dom.drupalit.tabs.TabMyIssues.java
de.dom.drupalit.tabs.TabProfile.java
org.mcsoxford.rss.Dates.java
org.mcsoxford.rss.MediaAttributes.java
org.mcsoxford.rss.MediaThumbnail.java
org.mcsoxford.rss.RSSBase.java
org.mcsoxford.rss.RSSConfig.java
org.mcsoxford.rss.RSSException.java
org.mcsoxford.rss.RSSFault.java
org.mcsoxford.rss.RSSFeed.java
org.mcsoxford.rss.RSSHandler.java
org.mcsoxford.rss.RSSItem.java
org.mcsoxford.rss.RSSLoader.java
org.mcsoxford.rss.RSSParserSPI.java
org.mcsoxford.rss.RSSParser.java
org.mcsoxford.rss.RSSReaderException.java
org.mcsoxford.rss.RSSReader.java
org.mcsoxford.rss.Resources.java