晚上坐下来,把ext2中的feed示例,改到java环境下运行,增加了在数据库中动态添加feed的功能。
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;
}


写个方法,有点守旧,老的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;
	}



整体来说,没有什么难的,挺顺的,输出的 xml要处理一下,里面的<dc:creator>要做一下替换。别的没什么~~

附个js 包,跟示例没什么差别,用示例就行~~
  • C7dd8bab-c965-309e-a666-b13b2f45406e-thumb
  • 描述:
  • 大小: 229.8 KB
评论
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

ecsun
搜索本博客
我的相册
959d6764-20ee-3f5d-8e7d-62b829f243a0-thumb
Faceye基础版(开源)新建标签页
共 24 张
最近加入圈子
存档
最新评论