Android Open Source - issue-parser R S S Parser

From Project

Back to project page issue-parser.


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
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * See the License for the specific language governing permissions and
 * limitations under the License.

package org.mcsoxford.rss;


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
  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("", false);
      factory.setFeature("", 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
    final InputSource source = new InputSource(feed);
    final XMLReader xmlreader = parser.getXMLReader();
    final RSSHandler handler = new RSSHandler(config);


    return handler.feed();


Java Source Code List