Android Open Source - SimpleReader Item List Entity Parser






From Project

Back to project page SimpleReader.

License

The source code is released under:

Apache License

If you think the Android project SimpleReader 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.dreamteam.app.commons;
/*w w  w .  ja  v a  2 s .  c  om*/
import info.monitorenter.cpdetector.io.CodepageDetectorProxy;
import info.monitorenter.cpdetector.io.JChardetFacade;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.ArrayList;

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

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

import com.dreamteam.app.entity.FeedItem;
import com.dreamteam.app.entity.ItemListEntity;
import com.dreamteam.app.utils.DateUtils;
import com.dreamteam.app.utils.HttpUtils;

public class ItemListEntityParser extends DefaultHandler {
  private ItemListEntity itemListEntity;
  private FeedItem feedItem;
  private ArrayList<FeedItem> items = new ArrayList<FeedItem>();
  private StringBuffer sb = new StringBuffer();
  private boolean isFeedTitle = true;
  private boolean isFeedDesc = true;
  private boolean isFeedLink = true;

  @Override
  public void startDocument() throws SAXException {
    itemListEntity = new ItemListEntity();
  }

  @Override
  public void endDocument() throws SAXException {
    itemListEntity.setItemList(items);
  }

  @Override
  public void startElement(String uri, String localName, String qName,
      Attributes attributes) throws SAXException {
    sb.setLength(0);
    if (qName.equalsIgnoreCase("item")) {
      feedItem = new FeedItem();
      items.add(feedItem);
      isFeedTitle = false;
      isFeedDesc = false;
      isFeedLink = false;
    }
  }

  @Override
  public void endElement(String uri, String localName, String qName)
      throws SAXException {
    String content = sb.toString();
    if (!isFeedLink && qName.equalsIgnoreCase("link")) {
      feedItem.setLink(content);
    }
    if (!isFeedTitle && qName.equalsIgnoreCase("title")) {
      feedItem.setTitle(content);
      return;
    }
    if (!isFeedDesc
        && (qName.equalsIgnoreCase("description") || qName
            .equalsIgnoreCase("content:encoded"))) {
      feedItem.setContent(content);
      ArrayList<String> srcs = HtmlFilter.getImageSrcs(content);
      if (!srcs.isEmpty())
        feedItem.setFirstImageUrl(srcs.get(0));
      feedItem.setImageUrls(srcs);
      isFeedDesc = false;
      return;
    }
    if (qName.equalsIgnoreCase("pubDate")) {
      content = DateUtils.rfcNormalDate(content);
      if (feedItem != null)
        feedItem.setPubdate(content);
    }
  }

  @Override
  public void characters(char[] ch, int start, int length)
      throws SAXException {
    sb.append(ch, start, length);
  }

  public ItemListEntity parse(InputStream source) {
    SAXParserFactory saxpf = SAXParserFactory.newInstance();
    SAXParser saxp = null;
    InputStream inputStream = null;
    InputSource inputSource = null;

    try {
      inputSource = new InputSource(source);
      saxp = saxpf.newSAXParser();
      XMLReader xmlr = saxp.getXMLReader();
      xmlr.setContentHandler(this);
      xmlr.parse(inputSource);
      return itemListEntity;
    } catch (ParserConfigurationException e) {
      e.printStackTrace();
      return null;
    } catch (SAXException e) {
      e.printStackTrace();
      return null;
    } catch (FileNotFoundException e) {
      e.printStackTrace();
      return null;
    } catch (IOException e) {
      e.printStackTrace();
      return null;
    } catch (Exception e) {
      e.printStackTrace();
      return null;
    } finally {
      if (inputStream != null) {
        try {
          inputStream.close();
          inputStream = null;
        } catch (IOException e) {
          e.printStackTrace();
        }

      }
    }
  }

  public ItemListEntity parse(String url) {
    // ???????????
    CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();
    // ??????????????
    detector.add(JChardetFacade.getInstance());
    // ??????????
    Charset charset = null;
    try {
      charset = detector.detectCodepage(new URL(url));
    } catch (Exception e1) {
      e1.printStackTrace();
    }
    // ?????????
    String encodingName = charset.name();

    SAXParserFactory saxpf = SAXParserFactory.newInstance();
    SAXParser saxp = null;
    InputStream inputStream = null;
    InputSource inputSource = null;

    try {
      inputStream = HttpUtils.getInputStream(url);
      if ("GBK".equals(encodingName)) {
        // ??InputStreamReader????????
        InputStreamReader streamReader = new InputStreamReader(inputStream,
            "GBK");
        inputSource = new InputSource(streamReader);
      } else {
        inputSource = new InputSource(inputStream);
      }
      saxp = saxpf.newSAXParser();
      XMLReader xmlr = saxp.getXMLReader();
      xmlr.setContentHandler(this);
      xmlr.parse(inputSource);
      return itemListEntity;
    } catch (ParserConfigurationException e) {
      e.printStackTrace();
      return null;
    } catch (SAXException e) {
      e.printStackTrace();
      return null;
    } catch (FileNotFoundException e) {
      e.printStackTrace();
      return null;
    } catch (IOException e) {
      e.printStackTrace();
      return null;
    } catch (Exception e) {
      e.printStackTrace();
      return null;
    } finally {
      if (inputStream != null) {
        try {
          inputStream.close();
          inputStream = null;
        } catch (IOException e) {
          e.printStackTrace();
        }

      }
    }
  }

}




Java Source Code List

com.dreamteam.app.adapter.CategoryDetailAdapter.java
com.dreamteam.app.adapter.FeedCategoryAdapter.java
com.dreamteam.app.adapter.GridAdapter.java
com.dreamteam.app.adapter.GuideViewPagerAdapter.java
com.dreamteam.app.adapter.ItemListAdapter.java
com.dreamteam.app.adapter.MPagerAdapter.java
com.dreamteam.app.commons.AppConfig.java
com.dreamteam.app.commons.AppContext.java
com.dreamteam.app.commons.HtmlFilter.java
com.dreamteam.app.commons.IFlyHelper.java
com.dreamteam.app.commons.ItemListEntityParser.java
com.dreamteam.app.commons.SectionHelper.java
com.dreamteam.app.commons.SeriaHelper.java
com.dreamteam.app.commons.SkinManager.java
com.dreamteam.app.commons.UIHelper.java
com.dreamteam.app.config.Contants.java
com.dreamteam.app.db.DbManager.java
com.dreamteam.app.db.FavoItemDbHelper.java
com.dreamteam.app.db.FeedDBManager.java
com.dreamteam.app.db.provider.RSSFeedCategoryProvider.java
com.dreamteam.app.entity.FeedItem.java
com.dreamteam.app.entity.Feed.java
com.dreamteam.app.entity.ItemListEntity.java
com.dreamteam.app.entity.RSSFeedCategroy.java
com.dreamteam.app.entity.Section.java
com.dreamteam.app.img.FileCacheManager.java
com.dreamteam.app.img.FileCache.java
com.dreamteam.app.img.ICache.java
com.dreamteam.app.img.ImageLoadTask.java
com.dreamteam.app.img.ImageLoad.java
com.dreamteam.app.img.ImageLoader.java
com.dreamteam.app.img.MemoryCache.java
com.dreamteam.app.rss.Dates.java
com.dreamteam.app.rss.Integers.java
com.dreamteam.app.rss.MediaAttributes.java
com.dreamteam.app.rss.MediaEnclosure.java
com.dreamteam.app.rss.MediaThumbnail.java
com.dreamteam.app.rss.RSSBase.java
com.dreamteam.app.rss.RSSConfig.java
com.dreamteam.app.rss.RSSException.java
com.dreamteam.app.rss.RSSFault.java
com.dreamteam.app.rss.RSSFeed.java
com.dreamteam.app.rss.RSSHandler.java
com.dreamteam.app.rss.RSSItem.java
com.dreamteam.app.rss.RSSLoader.java
com.dreamteam.app.rss.RSSParserSPI.java
com.dreamteam.app.rss.RSSParser.java
com.dreamteam.app.rss.RSSReaderException.java
com.dreamteam.app.rss.RSSReader.java
com.dreamteam.app.rss.Resources.java
com.dreamteam.app.ui.About.java
com.dreamteam.app.ui.BaseActivity.java
com.dreamteam.app.ui.BaseTitledActivity.java
com.dreamteam.app.ui.CategoryDetailActivity.java
com.dreamteam.app.ui.ColorListActivity.java
com.dreamteam.app.ui.FavoriteItemList.java
com.dreamteam.app.ui.FeedCategoryActivity.java
com.dreamteam.app.ui.FeedbackUI.java
com.dreamteam.app.ui.GuideActivity.java
com.dreamteam.app.ui.ImageDialog.java
com.dreamteam.app.ui.ImagesBrowseActivity.java
com.dreamteam.app.ui.ItemDetailActivity.java
com.dreamteam.app.ui.ItemListActivity.java
com.dreamteam.app.ui.LocalImageBrowseActivity.java
com.dreamteam.app.ui.LoginDialog.java
com.dreamteam.app.ui.MainActivity.java
com.dreamteam.app.ui.Setting.java
com.dreamteam.app.ui.SplashActivity.java
com.dreamteam.app.ui.SwitchBgActivity.java
com.dreamteam.app.ui.WidgetProvider.java
com.dreamteam.app.ui.adapter.ColorListAdapter.java
com.dreamteam.app.utils.CategoryNameExchange.java
com.dreamteam.app.utils.DateUtils.java
com.dreamteam.app.utils.FileUtils.java
com.dreamteam.app.utils.HttpUtils.java
com.dreamteam.app.utils.ImageLoader.java
com.dreamteam.app.utils.ImageUtils.java
com.dreamteam.app.utils.Logger.java
com.dreamteam.app.utils.MD5.java
com.dreamteam.app.utils.StringUtils.java
com.dreamteam.app.wallpaper.ChildAdapter.java
com.dreamteam.app.wallpaper.GroupGridAdapter.java
com.dreamteam.app.wallpaper.ImageBean.java
com.dreamteam.app.wallpaper.MyImageView.java
com.dreamteam.app.wallpaper.NativeImageLoader.java
com.dreamteam.app.wallpaper.WallPaperManager.java
com.dreamteam.custom.ui.PathAnimations.java
com.dreamteam.custom.ui.PullToRefreshListView.java