package com.cnblogs.android.core; import java.io.IOException; import java.io.StringReader; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; import android.content.Context; import com.cnblogs.android.dal.NewsDBHelp; import com.cnblogs.android.entity.*; import com.cnblogs.android.parser.NewsListXmlParser; import com.cnblogs.android.parser.NewsXmlParser; import com.cnblogs.android.utility.NetHelper; /** * News������ * * @author walkingp * */ public class NewsHelper extends DefaultHandler { /** * ����ҳ�뷵��News���󼯺� * * @return pageIndex:ҳ�룬��1��ʼ */ public static ArrayList<News> GetNewsList(int pageIndex) { int pageSize = Config.NEWS_PAGE_SIZE; String url = Config.URL_GET_NEWS_LIST.replace("{pageIndex}", String.valueOf(pageIndex)).replace("{pageSize}", String.valueOf(pageSize));// ���ݵ�ַ String dataString = NetHelper.GetContentFromUrl(url); ArrayList<News> list = ParseString(dataString); return list; } /** * �Ƽ����� * @param pageIndex��ҳ�룬��1��ʼ * @return */ public static List<News> GetRecommendNewsList(int pageIndex){ int pageSize=Config.NEWS_PAGE_SIZE; String url = Config.URL_RECOMMEND_NEWS_LIST.replace("{pageIndex}", String.valueOf(pageIndex)).replace("{pageSize}", String.valueOf(pageSize));// ���ݵ�ַ String dataString = NetHelper.GetContentFromUrl(url); List<News> list = ParseString(dataString); return list; } /** * ���ַ���ת��ΪNews���� * * @return */ private static ArrayList<News> ParseString(String dataString) { SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); ArrayList<News> listNews = new ArrayList<News>(); try { XMLReader xmlReader = saxParserFactory.newSAXParser() .getXMLReader(); NewsListXmlParser handler = new NewsListXmlParser(listNews); xmlReader.setContentHandler(handler); xmlReader.parse(new InputSource(new StringReader(dataString))); listNews = handler.GetNewsList(); } catch (SAXException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return listNews; } /** * ���ݱ�Ż�ȡ�������� * * @param blogId * @return */ public static String GetNewsContentByIdWithNet(int newsId) { String newsContent = ""; String url = Config.URL_GET_NEWS_DETAIL.replace("{0}", String.valueOf(newsId));// ��ַ String xml = NetHelper.GetContentFromUrl(url); if (xml == "") { return ""; } newsContent = ParseNewsString(xml); return newsContent; } /** * ���ݱ�Ż�ȡ��������(��ȡ���أ���ȡ����) * * @param blogId * @return */ public static String GetNewsContentById(int newsId, Context context) { String newsContent = ""; // ���ȿ��DZ������� NewsDBHelp helper = new NewsDBHelp(context); News entity = helper.GetNewsEntity(newsId); if (null == entity || entity.GetNewsContent().equals("")) { newsContent = GetNewsContentByIdWithNet(newsId); //String _newsContent=ImageCacher.FormatLocalHtmlWithImg(ImageCacher.EnumImageType.News, newsContent); //if (Config.IS_SYNCH2DB_AFTER_READ) { // helper.SynchronyContent2DB(newsId, _newsContent);// ͬ�������ݿ� //} } else { newsContent = entity.GetNewsContent(); } return newsContent; } /** * ���ַ���ת��Ϊ�������� * * @return */ private static String ParseNewsString(String dataString) { SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); String newsContent = ""; try { XMLReader xmlReader = saxParserFactory.newSAXParser() .getXMLReader(); NewsXmlParser handler = new NewsXmlParser(newsContent); xmlReader.setContentHandler(handler); xmlReader.parse(new InputSource(new StringReader(dataString))); newsContent = handler.GetNewsContent(); } catch (SAXException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return newsContent; } }