AbstractRssFeedView类是一个抽象类,继承了AbstractFeedView类。AbstractRssFeedView类里有一个抽象方法buildFeedItems必须自己实现。有一个newFeed方法返回一个channel需要重写。AbstractFeedView类里有一个final方法renderMergedOutputModel,这个方法是创建rss,返回rss的主要方法。这个方法如下:
@Override
protected final void renderMergedOutputModel(
Map<String, Object> model, HttpServletRequest request, HttpServletResponse response)
throws Exception {
T wireFeed = newFeed();
buildFeedMetadata(model, wireFeed, request);
buildFeedEntries(model, wireFeed, request, response);
setResponseContentType(request, response);
if (!StringUtils.hasText(wireFeed.getEncoding())) {
wireFeed.setEncoding("UTF-8");
}
WireFeedOutput feedOutput = new WireFeedOutput();
ServletOutputStream out = response.getOutputStream();
feedOutput.output(wireFeed, new OutputStreamWriter(out, wireFeed.getEncoding()));
out.flush();
}
1.加入依赖:
<dependency>
<groupId>com.rometools</groupId>
<artifactId>rome</artifactId>
<version>1.7.0</version>
</dependency>
2.重写protected Channel newFeed(){}
3实现buildFeedItems函数
4.如果想要扩展一些自定义的节点可以使用setForeignMarkup(List<Element> )方法。这个方法的参数是List<Element> 类型。具体做法是:创建一个List<Element> 变量;再创建一个自定义节点Element node;将创建的新节点add进List<Element>中;然后调用setForeignMarkup方法。
需要注意的是:rss规范中要求的一些必须的节点是必须有的,如果没有加进去运行时会报错的。