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 com.cnblogs.android.entity.*; import com.cnblogs.android.parser.RssListAddXmlParser; import com.cnblogs.android.parser.RssListXmlParser; import com.cnblogs.android.utility.NetHelper; /** * Rss������ * * @author walkingp * */ public class RssListHelper extends DefaultHandler { /** * ������ַ���� * @param url * @return */ public static RssList GetRssEntity(String url){ String dataString = NetHelper.getData(url, "UTF-8"); if (dataString.equals("")) { return null; } return ParseString2Entity(dataString); } /** * ���ݷ���õ��Ƽ����б� * * @return */ public static List<RssList> GetRssList(int cateId) { String url = Config.URL_RSS_LIST_URL.replace("{0}", String.valueOf(cateId));// ���ݵ�ַ String dataString = NetHelper.GetXmlContentFromUrl(url, "UTF-8"); if (dataString.equals("")) { return null; } ArrayList<RssList> list = ParseString(dataString); return list; } /** * ���ַ���ת��ΪRss���� * * @return */ private static ArrayList<RssList> ParseString(String dataString) { SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); ArrayList<RssList> listRss = new ArrayList<RssList>(); try { XMLReader xmlReader = saxParserFactory.newSAXParser() .getXMLReader(); RssListXmlParser handler = new RssListXmlParser(listRss); xmlReader.setContentHandler(handler); xmlReader.parse(new InputSource(new StringReader(dataString))); listRss = handler.GetRssList(); } catch (SAXException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return listRss; } /** * ���ַ���ת��ΪRss���� * * @return */ private static RssList ParseString2Entity(String dataString) { SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); RssList entity = new RssList(); try { XMLReader xmlReader = saxParserFactory.newSAXParser() .getXMLReader(); RssListAddXmlParser handler = new RssListAddXmlParser(entity); xmlReader.setContentHandler(handler); xmlReader.parse(new InputSource(new StringReader(dataString))); entity = handler.GetRssList(); } catch (SAXException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return entity; } }