把ext2中的feed示例,改到java环境下运行,增加了在数据库中动态添加feed的功能。
java里面处理RSS的类库感觉有点杂,选了一个syndication用了一下,感觉还可以。
返回feed的方法,这个方法实在太简单
写个方法,有点守旧,老的struts,用2.0,大同小异~~
整体来说,没有什么难的,挺顺的,输出的 xml要处理一下,里面的<dc:creator>要做一下替换。别的没什么~~
附个js 包,跟示例没什么差别,用示例就行~~
java里面处理RSS的类库感觉有点杂,选了一个syndication用了一下,感觉还可以。
返回feed的方法,这个方法实在太简单
- public SyndFeed getSyndFeed(String url) {
- // TODO Auto-generated method stub
- URL feedUrl;
- SyndFeedInput input;
- SyndFeed feed=null;
- try {
- feedUrl = new URL(url);
- input= new SyndFeedInput();
- feed= input.build(new XmlReader(feedUrl));
- } catch (MalformedURLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IllegalArgumentException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (FeedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return feed;
- }
public SyndFeed getSyndFeed(String url) { // TODO Auto-generated method stub URL feedUrl; SyndFeedInput input; SyndFeed feed=null; try { feedUrl = new URL(url); input= new SyndFeedInput(); feed= input.build(new XmlReader(feedUrl)); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FeedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return feed; }
写个方法,有点守旧,老的struts,用2.0,大同小异~~
- public ActionForward parseFeed(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response) {
- Map params = super.getRequestParameterMap(request);
- String feedUrl = "";
- String json = "";
- if (params.containsKey(StringPool.FEED_FEED)) {
- if (params.get(StringPool.FEED_FEED) != null) {
- feedUrl = params.get(StringPool.FEED_FEED).toString();
- }
- }
- if (StringUtils.isEmpty(feedUrl)) {
- String feedId = "";
- if (params.containsKey(StringPool.ENTITY_ID)) {
- feedId = params.get(StringPool.ENTITY_ID).toString();
- }
- if (StringUtils.isNotEmpty(feedId)) {
- Feed feed = (Feed) this.getEntity(Feed.class, feedId);
- feedUrl = feed.getUrl();
- }
- }
- if (StringUtils.isNotEmpty(feedUrl)) {
- // json=this.getFeedParseService().getAllFeeds(feedUrl);
- // this.jsonPrint(response, json);
- SyndFeedOutput output = new SyndFeedOutput();
- SyndFeed feed = this.getFeedParseService().getSyndFeed(feedUrl);
- response.setCharacterEncoding("UTF-8");
- try {
- response.setContentType("text/xml ");
- PrintWriter out = (PrintWriter) response.getWriter();
- String feedContent = output.outputString(feed).toString();
- out.print(feedContent);
- // 发布为feed
- // output.output(feed, response.getWriter());
- } catch (FeedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- return null;
- }
public ActionForward parseFeed(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { Map params = super.getRequestParameterMap(request); String feedUrl = ""; String json = ""; if (params.containsKey(StringPool.FEED_FEED)) { if (params.get(StringPool.FEED_FEED) != null) { feedUrl = params.get(StringPool.FEED_FEED).toString(); } } if (StringUtils.isEmpty(feedUrl)) { String feedId = ""; if (params.containsKey(StringPool.ENTITY_ID)) { feedId = params.get(StringPool.ENTITY_ID).toString(); } if (StringUtils.isNotEmpty(feedId)) { Feed feed = (Feed) this.getEntity(Feed.class, feedId); feedUrl = feed.getUrl(); } } if (StringUtils.isNotEmpty(feedUrl)) { // json=this.getFeedParseService().getAllFeeds(feedUrl); // this.jsonPrint(response, json); SyndFeedOutput output = new SyndFeedOutput(); SyndFeed feed = this.getFeedParseService().getSyndFeed(feedUrl); response.setCharacterEncoding("UTF-8"); try { response.setContentType("text/xml "); PrintWriter out = (PrintWriter) response.getWriter(); String feedContent = output.outputString(feed).toString(); out.print(feedContent); // 发布为feed // output.output(feed, response.getWriter()); } catch (FeedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return null; }
整体来说,没有什么难的,挺顺的,输出的 xml要处理一下,里面的<dc:creator>要做一下替换。别的没什么~~
附个js 包,跟示例没什么差别,用示例就行~~