NewsService.java
上传用户:shen332233
上传日期:2021-09-03
资源大小:7478k
文件大小:3k
源码类别:

Ajax

开发平台:

Java

  1. package ajaxdashboard.service;
  2. import ajaxdashboard.domain.NewsItem;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.net.HttpURLConnection;
  6. import java.net.URL;
  7. import java.util.ArrayList;
  8. import java.util.Collection;
  9. import java.util.Iterator;
  10. import java.util.List;
  11. import org.jdom.Document;
  12. import org.jdom.Element;
  13. import org.jdom.JDOMException;
  14. import org.jdom.input.SAXBuilder;
  15. public class NewsService {
  16.     private static final String NEWS_URL =
  17.             "http://rss.news.yahoo.com/rss/topstories";
  18.     
  19.     
  20.     public Collection getNewsItems() {
  21.         Document newsXML = getNewsItemsXML();
  22.         return parseNewsItems(newsXML);
  23.     }
  24.     
  25.     private InputStream getNewsServiceInputStream() {
  26.         InputStream newsInputStream = null;
  27.         
  28.         try {
  29.             HttpURLConnection con =
  30.                     (HttpURLConnection)new URL(NEWS_URL).openConnection();
  31.             con.setDoInput(true);
  32.             con.setDoOutput(true);
  33.             con.setRequestMethod("GET");
  34.             
  35.             newsInputStream = con.getInputStream();
  36.         }
  37.         catch(Exception e) {
  38.             System.out.println("Exception retrieving news: " + e.toString());
  39.         }
  40.         
  41.         return newsInputStream;
  42.         
  43.     }
  44.     
  45.     private Document getNewsItemsXML() {
  46.         SAXBuilder builder = new SAXBuilder();
  47.         
  48.         InputStream newsInputStream = getNewsServiceInputStream();
  49.         
  50.         Document news = null;
  51.         
  52.         try {
  53.             news = builder.build(newsInputStream);
  54.         } 
  55.         catch (JDOMException ex) {
  56.             System.out.println("Error: " + ex);
  57.         } 
  58.         catch (IOException ex) {
  59.             System.out.println("Error: ");
  60.         }
  61.         
  62.         return news;
  63.         
  64.     }
  65.     
  66.     private Collection parseNewsItems(Document news) {
  67.         Collection newsItems = new ArrayList();
  68.         
  69.         Element root = news.getRootElement();
  70.         
  71.         List items = root.getChild("channel").getChildren("item");
  72.         Element item = null;
  73.         NewsItem newsItem = null;
  74.         for(Iterator it = items.iterator(); it.hasNext();) {
  75.             item = (Element)it.next();
  76.             
  77.             newsItem = new NewsItem();
  78.             newsItem.setGuid(item.getChildText("guid"));
  79.             newsItem.setTitle(item.getChildText("title"));
  80.             newsItem.setLink(item.getChildText("link"));
  81.             newsItem.setDescription(item.getChildText("description"));
  82.             
  83.             newsItems.add(newsItem);
  84.         }
  85.         
  86.         return newsItems;
  87.     }
  88.     
  89. }