关于RSS订阅功能的实现与初步认识

本文介绍如何在Spring+SpringMVC+Hibernate环境下实现RSS订阅功能,包括创建符合RSS规范的XML文档,使用Java处理XML内容,以及通过WireFeedOutput和DOM操作进行数据封装和处理。通过详细步骤,展示RSS频道(Channel)、条目(Item)的构建,并提供代码示例。
摘要由CSDN通过智能技术生成

                     起初会有各种的规范,也就是要实现一个符合rss规范的xml文档,这个文档会在火狐、QQ浏览器上自动解析成一个文章列表,大概就是这个意思,好像还有个rss阅读器什么的,反正这个RSS订阅功能在2000年初的时候好像流行了一段时间,但是后来就不火了,所以网上可供参考的内容也不多吧。。。少说废话 ,直接code吧。

                             这是规范。。。。

                   

     

             

            


                      

   

                        


              好了,以上就是我当初拿到的规范和要实现的内容模板,直接看code。

    

             我是用的web框架是sping+springmvc+hibernate,数据库的话是mysql.


            package com.hjhz.app.web.action.admin.rss;


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.mvc.ParameterizableViewController;
import org.w3c.dom.CDATASection;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;


import com.hjhz.app.common.Global;
import com.hjhz.app.common.WebRootPath;
import com.hjhz.app.db.dao.JksbMessageDAO;
import com.hjhz.app.db.po.JksbMessage;
import com.sun.syndication.feed.rss.Channel;
import com.sun.syndication.feed.rss.Content;
import com.sun.syndication.feed.rss.Description;
import com.sun.syndication.feed.rss.Item;
import com.sun.syndication.feed.rss.Source;
import com.sun.syndication.io.FeedException;
import com.sun.syndication.io.WireFeedOutput;


/**
 * 
 * @author YGA
 *
 */
@Controller
@RequestMapping(value="/RSS")
public class SiteRSSAction extends ParameterizableViewController{

  private static final String COULD_NOT_GENERATE_FEED_ERROR = "Could not generate feed";
  
  @Inject
  private JksbMessageDAO JksbMessageDAO;
  
  @RequestMapping(value="/getRss")
  public String createRSS(HttpServletRequest request,HttpServletResponse response) throws Exception{
   String rootPath = WebRootPath.getPath();
String path = rootPath + Global.UPLOAD_FILE_RSS_PATH;//上传路径
try {
          Channel channel = getChannel(request);
          OutputStreamWriter o = new OutputStreamWriter(new FileOutputStream(path),"UTF-8");//文件编码格式为utf-8
//           Writer w=new FileWriter(out);
          WireFeedOutput outs = new WireFeedOutput();
          outs.output(channel, o);//先上传至服务器做保存
          o.close();
          /*****************************************************************/
          DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
          dbf.setValidating(false);
          DocumentBuilder db = dbf.newDocumentBuilder();
          Document doc = db.parse(new FileInputStream(new File(path)));//再解析上传的RSS的xml文件为Document格式
          Element element = doc.getDocumentElement();//获得根节点
          NodeList nlist=element.getChildNodes();//获得根节点下的所有子节点
          for(int i=0;i<nlist.getLength();i++){
          Node node1 = nlist.item(i);
          if("channel".equals(node1.getNodeName())){
          NodeList nodeDetail = node1.getChi

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值