`
jzhua2006
  • 浏览: 304667 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

对Rome之我见

阅读更多
Rome: http://wiki.java.net/bin/view/Javawsxml/Rome
Rome是 java.net 上的一个开源项目,为什么叫Rome呢,按它的介绍上的说法,有个“条条大路通罗马”的意思,有些RSS的意味。Rome可能是 sun 公司从自己某个子项目中抽离出来的,package和类的命名就象j2sdk一样感觉规范。功能上支持RSS的所有版本及 Atom 0.3(Atom是和RSS类似的一种内容聚合的方式)。Rome 本身是提供API和功能实现.

package com.itfly;

import com.sun.syndication.io.impl.DateParser;

/**
* 读取解析一个远程RSS
* RomeReadByRemote.java
*
* @author mahaibo
* @version $Revision$
*
* @hibernate.class lazy="true" table="RomeReadByRemote"
*/
public class RomeReadByRemote {

public static void main(String[] args)
{
  try
  {
   //如果程序位于防火墙后面,就需要在程序中加上一些Proxy设置。
   java.util.Properties systemSettings = System.getProperties();
      systemSettings.put("http.proxyHost", "wsay.net");
      systemSettings.put("http.proxyPort", "8080");
      System.setProperties(systemSettings);
     
      //有时候,可能会遇到“java.io.IOException: Server returned HTTP response code: 403 for URL”的错误信息。通常是因为服务器的安全设置不接受Java程序作为客户端访问,解决方案是设置客户端的User Agent, 示例代码如下:
      String urlStr = "http://blogsearch.google.com/blogsearch_feeds?hl=en&q=feedsky&ie=utf-8&num=10&output=rss";
      java.net.URLConnection feedUrl = new java.net.URL(urlStr).openConnection();
      feedUrl.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
      com.sun.syndication.io.SyndFeedInput input = new com.sun.syndication.io.SyndFeedInput();
      com.sun.syndication.feed.synd.SyndFeed feed = input.build(new com.sun.syndication.io.XmlReader(feedUrl));
      String feedType = feed.getFeedType();//获取原feed属于哪种格式
     
      System.out.println(feedType);
      java.util.List list = feed.getEntries();
      for (int i=0; i< list.size(); i++) {
       com.sun.syndication.feed.synd.SyndEntry entry = (com.sun.syndication.feed.synd.SyndEntry)list.get(i);
     
     
       String entryTitle = entry.getLink();
       System.out.println(entry.getPublishedDate());
             System.out.println(entry.getTitle());
             System.out.println(entry.getLink());
             System.out.println(entry.getAuthor());
             System.out.println(entry.getAuthor());

      }
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
}

}


package com.itfly;

import java.io.File;
import java.io.PrintWriter;

import com.sun.syndication.io.SyndFeedOutput;

/**
* 读取解析一个远程RSS,并写入到一个本地文件里
* RomeReadByRemote.java
*
* @author mahaibo
* @version $Revision$
*
* @hibernate.class lazy="true" table="RomeReadByRemote"
*/
public class RomeReadAndWriteByRemote {

private static final String feedType = "rss_1.0";
public static void main(String[] args)
{
 
  try
  {
   java.util.Properties systemSettings = System.getProperties();
      systemSettings.put("http.proxyHost", "mywebcache.com");
      systemSettings.put("http.proxyPort", "8080");
      System.setProperties(systemSettings);
     
     
      String urlStr = "http://blogsearch.google.com/blogsearch_feeds?hl=en&q=feedsky&ie=utf-8&num=10&output=rss";
      java.net.URLConnection feedUrl = new java.net.URL(urlStr).openConnection();
      feedUrl.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
      //读取一个远程的Rss文件
      com.sun.syndication.io.SyndFeedInput input = new com.sun.syndication.io.SyndFeedInput();
      com.sun.syndication.feed.synd.SyndFeed feed = input.build(new com.sun.syndication.io.XmlReader(feedUrl));
     
      //把读取到的结果写入到到本地一个文件里
      feed.setFeedType(feedType);//设置转换的类型后再保存到另一个文件
      SyndFeedOutput output = new SyndFeedOutput();
            output.output(feed,new File("c:/pic/1.xml"));
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
}

}



package com.itfly;

import java.io.File;
import java.io.PrintWriter;

import com.sun.syndication.io.SyndFeedOutput;

/**
* 读取解析一个本地的RSS
* RomeReadByRemote.java
*
* @author mahaibo
* @version $Revision$
*
* @hibernate.class lazy="true" table="RomeReadByRemote"
*/
public class RomeReadByLocal {
private static final String feedType = "rss_2.0";
public static void main(String[] args)
{
  try
  {  
   //读取解析本地的一个Rss文件
      com.sun.syndication.io.SyndFeedInput input = new com.sun.syndication.io.SyndFeedInput();
      com.sun.syndication.feed.synd.SyndFeed feed = input.build(new File("c:/pic/1.xml"));
      System.out.println(feed.getFeedType());//获得原 rss是哪种格式
      //在控制台输出
      SyndFeedOutput output = new SyndFeedOutput();
      feed.setFeedType(feedType);//以哪种格式输出feed,如果这里不设置以哪种格式输出,会以它原来的格式输出
      output.output(feed, new PrintWriter(System.out));
     
     
//      java.util.List list = feed.getEntries();
//      for (int i=0; i< list.size(); i++) {
//       com.sun.syndication.feed.synd.SyndEntry entry = (com.sun.syndication.feed.synd.SyndEntry)list.get(i);
//     
//     
//       String entryTitle = entry.getLink();
//       System.out.println(entry.getPublishedDate());
//             System.out.println(entry.getTitle());
//             System.out.println(entry.getLink());
//             System.out.println(entry.getAuthor());
//             System.out.println(entry.getAuthor());
//
//      }
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
}

}



package com.itfly;

import java.io.File;
import java.io.PrintWriter;

import com.sun.syndication.io.SyndFeedOutput;

/**
* 读取解析一个本地的RSS,并写入另一个文件里
* RomeReadByRemote.java
*
* @author mahaibo
* @version $Revision$
*
* @hibernate.class lazy="true" table="RomeReadByRemote"
*/
public class RomeReadAndWriteByLocal {

public static void main(String[] args)
{
  try
  {  
   //读取解析本地的一个Rss文件
      com.sun.syndication.io.SyndFeedInput input = new com.sun.syndication.io.SyndFeedInput();
      com.sun.syndication.feed.synd.SyndFeed feed = input.build(new File("c:/pic/1.xml"));
     
      //写入到另一个文件里
      SyndFeedOutput output = new SyndFeedOutput();
      output.output(feed, new File("c:/pic/2.xml"));
     
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
}

}



package com.itfly;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.feed.synd.SyndFeedImpl;
import com.sun.syndication.io.SyndFeedOutput;
/**
* 烧制(合并)作2个远程的RSS
* RomeBurnByRemote.java
*
* @author mahaibo
* @version $Revision$
*
* @hibernate.class lazy="true" table="RomeBurnByRemote"
*/
public class RomeBurnByRemote {

private static final String feedType = "rss_1.0";
public static void main(String[] args)
{
  try
  {
   SyndFeed feed = new SyndFeedImpl();
            feed.setFeedType(feedType);

            feed.setTitle("wsay Feed");
            feed.setDescription("wsay Feed");
            feed.setAuthor("wsay");
            feed.setLink("http://www.wsay.net");
           
           
  
   java.util.Properties systemSettings = System.getProperties();
      systemSettings.put("http.proxyHost", "wsay.net");
      systemSettings.put("http.proxyPort", "8080");
      System.setProperties(systemSettings);
     
     
      String urlStr = "http://blogsearch.google.com/blogsearch_feeds?hl=en&q=feedsky&ie=utf-8&num=10&output=rss";
      java.net.URLConnection feedUrl = new java.net.URL(urlStr).openConnection();
      feedUrl.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
     
     
      String urlStr1 = "http://blog.csdn.net/mhbjava/category/173484.aspx/rss";
      java.net.URLConnection feedUrl1 = new java.net.URL(urlStr1).openConnection();
      feedUrl1.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
     
      //读取某个运程的rss
      com.sun.syndication.io.SyndFeedInput input = new com.sun.syndication.io.SyndFeedInput();
      com.sun.syndication.feed.synd.SyndFeed feedone = input.build(new com.sun.syndication.io.XmlReader(feedUrl));
     
      com.sun.syndication.feed.synd.SyndFeed feedtwo = input.build(new com.sun.syndication.io.XmlReader(feedUrl1));
     
      List list = new ArrayList();
      list.addAll(feedone.getEntries());
      list.addAll(feedtwo.getEntries());
     
      feed.setEntries(list);//烧制2个rss
     
      //在控制台输出
      SyndFeedOutput output = new SyndFeedOutput();
            output.output(feed,new PrintWriter(System.out));
     
     
     
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
}

}

分享到:
评论

相关推荐

    srt英文字幕合并到中文字幕

    周末在家上看《Rome》,发现有中英文两种字幕切换,英文字幕还是大写, 于是写了个小程序,完成以下两个功能: 1、 convert all upper case to lower case把英文字幕变成小写 2、 attach Chinese script to ...

    九年级英语LessonSaying冀教PPT学习教案.pptx

    此外,还讨论了其他一些谚语,例如"When in Rome, do as the Romans do"(入乡随俗),强调适应新环境和尊重当地习俗;"You can not teach an old dog new tricks"(江山易改,本性难移),暗示改变一个人根深蒂固的...

    小学英语谚语大全.doc

    16. "患难见真情" - A friend in need is a friend indeed. 真朋友会在困难时刻显现,检验友谊的深度。 17. "少壮不努力,老大徒伤悲" - A young idler, an old beggar. 劝诫人们年轻时应勤奋工作,以免晚年后悔。 ...

    小升初英语文章谚语50条.docx

    以下是对这50条谚语的详细解释: 1. 眼见为实。Seeing is believing. 这句话强调了直接观察的重要性,意味着只有亲眼看到才能确信无疑。 2. 人生短暂,学艺无穷。Art is long, life is short. 提醒人们珍惜时间,...

    高中英语100个加分句型 6.docx

    32. Rome wasn't built in a day. 罗马不是一天建成的,表示成功需要时间积累。 33. A journey of a thousand miles begins with a single step. 千里之行,始于足下,鼓励人们从小事做起。 34. Learn from ...

    英语四级口语考试练习小积累(三).doc

    4. **Every dog has his day**:每个人都有得意之时,暗示即使平凡的人也有机会成功。 5. **Speak of the devil**:当提到某人时,他恰好出现,表示巧合。 6. **Love is blind**:爱情使人盲目,意指恋爱中的人...

    重庆市沙坪坝区虎溪镇八年级英语下册Unit10I’vehadthisbikeforthreeyears测试题无答案新版人教新目标

    第三题可能提到了去欧洲旅游的目的地,包括“巴黎”和“罗马”(Paris and Rome)。第四题可能涉及英雄人物,如“消防员”(firefighter),因为他们常常在水中救人。第五题可能让学生填写另一种夜间动物,如“豹子...

    习语翻译[整理].pdf

    首先,很多英语谚语起源于警句和格言,例如"A friend in need is a friend indeed",这句谚语强调了患难见真情的朋友关系。"Business before pleasure"提醒我们工作优先于娱乐。"Tomorrow comes never"告诫人们珍惜...

    英语谚语大全希望大家喜欢

    "英语谚语大全"这个资源包含了大量英语习语和谚语,对于学习者来说,掌握这些谚语不仅能提升语言能力,更能增进对英美文化的理解。 在英语学习中,谚语扮演着独特的角色。首先,它们丰富了我们的表达,使得对话或...

    意大利必备英语学习资料全.doc

    4. **All roads lead to Rome.** 这句谚语表示达成目标有多种方法,不是只有一条道路。 5. **All work and no play makes Jack a dull boy.** 强调工作之余也需要休息和娱乐,否则生活会变得单调乏味。 6. **A bad...

    功夫熊猫励志英语 学好英语走遍天下都不怕

    - **应用**:强调终身学习对提高生活质量的重要性。 以上这些经典的英语励志短语不仅能够激励人们在英语学习过程中保持积极的心态,还能在日常生活中起到引导作用。通过不断积累和运用这些语句,不仅可以提升自己...

    毕业论文格式要求

    - **标注方法**:应在引用文段的最后一个标点符号之内采用[ ]中添加阿拉伯数字的方式,并按顺序在参考文献中标明。 - **参考文献类型**: - 连续出版物:序号 作者. 文题. 刊名, 年, 卷号(期号): 起~止页码. - ...

    2022年山西省中考英语模拟试题及答案分享.pdf

    4. All roads lead to Rome. 条条大路通罗马。这句话告诉我们,所有的选择和道路都将会通往成功,只要我们不放弃和努力。 5. All work and no play makes Jack a dull boy. 只会用功不玩耍,聪明孩子也变傻。这句话...

Global site tag (gtag.js) - Google Analytics