RSS(也叫聚合内容,Really Simple Syndication)现在用的已经很广啦,最初的RSS要追溯到1995年,当Ramanathan V. Guha和其他在苹果电脑公司的高级技术组开发了一个测试的内容框架。更多有关RSS的资料可查看这里,下面我们来为我们的JSP网站生成RSS。

首先我们来看看最基本的RSS结构:

 
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"  
  3. xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"  
  4. xmlns:wfw="http://wellformedweb.org/CommentAPI/"  
  5. xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  6. </rss>

其实就是一个XML文件!在<rss></rss>之间我们可以自由配置自己要发布的RSS的格式。例如此次我们要发布的RSS是这样的:

 
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" x
  3. mlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" 
  4. xmlns:wfw="http://wellformedweb.org/CommentAPI/" x
  5. mlns:slash="http://purl.org/rss/1.0/modules/slash/">
  6. <channel>
  7. <item>
  8. <title>JSP网站RSS的实现</title>
  9. <author>neeke</author>
  10. <pubDate>2008-10-04</pubDate>
  11. <description>这是来自尼克技术博客博客的RSS</description>
  12. <category>J2EE技术</category>
  13. </item>
  14. </channel>
  15. </rss>

 

了解了它的结构实现起来就容易了。我们创建IO流,并从数据库中获取到我们要发布的RSS资源的集合,然后按照它的格式与结构一行一行的写入到一个RSS.XML文件中即可。

 
  1. public static void publishRss(String rssPath)
  2.     {
  3.       &
    nbsp; 
    //获得要发布的RSS数据集合
  4.         ArrayList rssArticle = ArticleManager.getArticlesAll();
  5.         try {
  6.             //创建输入输出流
  7.             FileWriter fw = new FileWriter(rssPath);
  8.             BufferedWriter bw = new BufferedWriter(fw);
  9.             //开始按照格式写入数据
  10.             bw.write(
  11.                     "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n");
  12.             bw.write("<?xml-stylesheet type=\"text/xsl\" href=\"CSS/rss.xslt\"?>");
  13.             bw.write("<rss version=\"2.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:trackback=\"http://madskills.com/public/xml/rss/module/trackback/\" xmlns:wfw=\"http://wellformedweb.org/CommentAPI/\" xmlns:slash=\"http://purl.org/rss/1.0/modules/slash/\">\r\n");
  14.             bw.write("<channel>\r\n");
  15.             for (int i = 0; i < rssArticle.size(); i++) {
  16.                 ArticleBean article = (ArticleBean) rssArticle.get(i);
  17.                 bw.write("<item>\r\n");
  18.                 bw.write("<title>" + article.getTitle() + "</title>\r\n");
  19.                 bw.write("<author>" + article.getAuthorId() + "</author>\r\n");
  20.                 bw.write("<pubDate>" + article.getPostTime() + "</pubDate>\r\n");
  21.                 bw.write("<description>" + article.getIntro() +
  22.                          "</description>\r\n");
  23.                 bw.write("<category>" + article.getCateId() + "</category>\r\n");
  24.                 bw.write("</item>\r\n");
  25.             }
  26.             bw.write("</channel>\r\n");
  27.             bw.write("</rss>");
  28.             //关闭流,RSS发布完毕。
  29.             bw.close();
  30.             fw.close();
  31.         } catch (IOException ex) {
  32.             ex.printStackTrace();
  33.         }
  34.     }

发布完毕,经过我的测试打开后会提示出错,用记事本打开生成的源文件,然而我们的RSS文件是一点问题都没有的哇,怎么可能呢?接着又用JBuilder打开这个XML文件,晕倒~汉字全是乱码,立刻意识到问题出在了哪里了。在哪呢?其实就是文件的编码问题!将原先
bw.write("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n");该行代码中的UTF-8改为GBK,重新跑一次程序,一切OK!

 » 除非另有声明,本站文章均为原创。
 » 转载原创文章请以链接形式注明:
 » 转载自:[Neeke] » [JSP网站RSS的实现]
 » 本文链接地址: http://www.ineeke.com/archives/716/
 » 如果喜欢可以:点此邮件订阅或者点此阅读器订阅