当前位置:首页 » 编程语言 » rssjava

rssjava

发布时间: 2022-08-25 06:40:32

① 怎么用java做个RSS阅读器 求代码

解析XML 希望对你有帮助
public class ParseXML {
//下载一个XML
public void downloadXMLFile(String url,String dir) throws IOException{
//下载的文件夹创建
File ff = new File(dir);
if(!ff.exists()){
ff.mkdir();
}
//爬取指定url下的内容
URL u = new URL(url);
URLConnection uc = u.openConnection();
InputStream is = uc.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
//d:xml
FileWriter fw = new FileWriter(dir+File.separator+getFileNameByURL(url));
BufferedWriter bw = new BufferedWriter(fw);

String line;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
}
bw.close();
br.close();
is.close();
fw.close();
}

//解析xml

public List<News> parseXML(File file) throws DocumentException{
//创建解析器
SAXReader sr = new SAXReader();
//要解析的文件
Document doc = sr.read(file);
//获得跟节点
Element e = doc.getRootElement();
System.out.println(e.getName());
List<News> list = new ArrayList<News>();
//从跟节点下查找某节点
List<Element> listTitle = e.selectNodes(Common.title);
List<Element> listLink = e.selectNodes(Common.link);
List<Element> listDesc = e.selectNodes(Common.desc);
List<Element> listPub = e.selectNodes(Common.pubDate);

for(int i=0;i<listTitle.size();i++){
News news = new News();
news.setNTITLE(listTitle.get(i).getText());
news.setNLINK(listLink.get(i).getText());
news.setNDESC(listDesc.get(i).getText());
news.setNPUBDATE(listPub.get(i).getText());
System.out.println(listTitle.get(i).getText());
System.out.println(listLink.get(i).getText());
list.add(news);
}

return list;
}

//获取文件名
public String getFileNameByURL(String url){
String[] names = url.split("/");
return names[names.length-1];
}

public static void main(String[] args){
ParseXML px = new ParseXML();
try {
px.downloadXMLFile("http://news.163.com/special/00011K6L/rss_newstop.xml", "f://xml");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
File f = new File("f://xml//rss_newstop.xml");//XML
try {
List<News> list = px.parseXML(f);
NewsServiceImple nsi = new NewsServiceImple();
nsi.insertNews(list, f.getName());
} catch (DocumentException e) {
e.printStackTrace();
}
}
}

② java代码怎么实现qq邮箱订阅开放平台的rss示例 求完整代码

下载rss的xml文件, 解析成bean 显示

③ RSS是什麽

RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是目前使用最广泛的XML应用。

RSS是一种起源于网景的推技术,将订户订阅的内容传送给他们的通讯协同格式(Protocol)。RSS可以是以下三个解释的其中一个:

Really Simple Syndication

RDF (Resource Description Framework) Site Summary

Rich Site Summary

但其实这三个解释都是指同一种Syndication的技术。 RSS目前广泛用于网上新闻频道,blog和wiki,主要的版本有0.91, 1.0, 2.0。

更多有关RSS

今天肯定有人还记得IE 4刚刚推出来的时候有一个有趣的功能,那就是新闻频道。这个新闻频道的功能与Netscape推出的新闻频道是很相似的(当时Netscape还是市场上领先的浏览器)。为此Netscape 定义了一套描述新闻频道的语言,这就是RSS,只不过Netscape自当时起每况愈下,所以最终也没有发布一个正式的RSS规范(只发布了一个0.9版本)。而微软也在当时推出了支持自己IE的CDF(Channel Definition Format)数据规格,与RSS非常接近。微软试图用新闻频道的功能把“推”(Push)技术变成一个应用主流,并与Netscape抗衡。不过出乎预测的是,“推”技术自始至终没有找到合适的商业模型,而且伴随着其他各类网络特性的出现,也日益无法显现自身的优势。新闻频道在浏览器中的地位最终日暮西山,最后也在IE的后续版本中消失了。

新闻频道的确进入了低谷,但是RSS并没有被业界人士所抛弃。过去两年,Blog从一个专业群体开始,逐步成为了网络上最热门的新话题。而RSS成为了描述Blog主题和更新信息的最基本方法。于是RSS这项技术被着名Blogger/Geek戴夫·温那(Dave Winner)的公司UserLand所接手,继续开发新的版本,以适应新的网络应用需要。新的网络应用就是Blog,因为戴夫·温那的努力,RSS升级到了0.91版,然后达到了0.92版,随后在各种Blog工具中得到了应用,并被众多的专业新闻站点所支持。在广泛的应用过程中,众多的专业人士认识到需要组织起来,把RSS发展成为一个通用的规范,并进一步标准化。一个联合小组根据W3C新一代的语义网技术RDF对RSS进行了重新定义,发布了RSS 1.0,并把RSS定义为“RDF Site Summary”。这项工作并没有与戴夫·温那进行有效的沟通,而戴夫则坚持在自己设想的方向上进一步开发RSS的后续版本,也并不承认RSS 1.0的有效性。RSS由此开始分化形成了RSS 0.9x/2.0和RSS 1.0两个阵营,也由此引起了在专业人群中的广泛争论。

因为有着争论的存在,所以一直到今天,RSS 1.0还没有成为标准化组织的真正标准。而戴夫·温那却在2002年9月独自把RSS升级到了2.0版本,其中的定义完全是全新的模式,并没有任何RSS 1.0的影子。这引发了网络上进一步争议,究竟让一个越来越普及的数据格式成为一个开放的标准,还是被一家公司所定义和控制,成为了争议的焦点。戴夫·温那并没有为自己辩解,他的观点是RSS还需要进一步发展,需要专业人士更明确的定义,不过恐怕这种轻描淡写不能消除人们对RSS“被一家商业公司独占”的担心。

前面的铺垫对用户来说也许没有什么太大的意义,可能更多人关心如何在自己的Blog增加RSS输出,这样可以让很多新闻聚合工具(例如CNBlog刚刚推荐的NewzCrawler)很容易找到你并自动获得你在Blog中的更新内容。

它有什么用处:让别人容易的发现你已经更新了你的站点,让人们很容易的追踪他们阅读的所有weblogs。

不久,一家专门从事Blog软件开发的公司UserLand接手了RSS 0.91版本,并把它作为其Blog软件的基础功能之一继续开发,逐步推出了0.92、0.93和0.94版本。随着Blog的流行,RSS作为一种基本的功能也被越来越多的网站和Blog软件支持。

在UserLand公司接手并不断开发RSS的同时,很多的专业人士认识到需要通过一个第三方、非商业的组织,把RSS发展成为一个通用的规范,并进一步标准化。于是2001年一个联合小组在0.90版本RSS的开发原则下,以W3C新一代的语义网技术RDF(Resource Description Framework)为基础,对RSS进行了重新定义,发布RSS1.0,并将RSS定义为“RDF Site Summary”。但是这项工作没有与UserLand公司进行有效的沟通,UserLand公司也不承认RSS 1.0的有效性,并坚持按照自己的设想进一步开发出RSS的后续版本,到2002年9月发布了最新版本RSS 2.0,UserLand公司将RSS定义为“Really Simple Syndication”。

目前RSS已经分化为RSS 0.9x/2.0和RSS 1.0两个阵营,由于分歧的存在和RSS 0.9x/2.0的广泛应用现状,RSS 1.0还没有成为标准化组织的真正标准。

RSS可以干什么

1.订阅BLOG(你可以订阅你工作中所需的技术文章;也可以订阅与你有共同爱好的作者的Blog,总之,你对什么感兴趣你就可以订什么)

2.订阅新闻(无论是奇闻怪事、明星消息、体坛风云,只要你想知道的,都可以订阅)

你再也不用一个网站一个网站,一个网页一个网页去逛了。只要这将你需要的内容订阅在一个RSS阅读器中,这些内容就会自动出现你的阅读器里,你也不必为了一个急切想知道的消息而不断的刷新网页,因为一旦有了更新,RSS阅读器就会自己通知你!

RSS阅读器

目前,RSS阅读器基本可以分为两类。

第一类大多数阅读器是运行在计算机桌面上的应用程序,通过所订阅网站的新闻供应,可自动、定时地更新新闻标题。在该类阅读器中,有Awasu、FeedDemon和RSSReader这三款流行的阅读器,都提供免费试用版和付费高级版。国内最近也推出了几款RSS阅读器:周博通,看天下,博阅。另外,开源社区也推出了很多优秀的阅读器,RSSOWl(完全java开发,点击下载)它不仅是完全支持中文界面,而且还是完全的免费软件!(后面我们就将以开源软件周博通和rssowl为例,为大家介绍怎样来使用RSS阅读器-周伯通,怎样使用RSS阅读器-rssowl))

第二类新闻阅读器通常是内嵌于已在计算机中运行的应用程序中。例如,NewsGator内嵌在微软的Outlook中,所订阅的新闻标题位于Outlook的收件箱文件夹中。另外,Pluck内嵌在Internet Explorer浏览器中!

RSS的联合(Syndication)和聚合(Aggregation)

发布一个RSS文件(RSS Feed)后,这个RSS Feed中包含的信息就能直接被其他站点调用,而且由于这些数据都是标准的XML格式,所以也能在其他的终端和服务中使用,如PDA、手机、邮件列表等。而且一个网站联盟(比如专门讨论旅游的网站系列)也能通过互相调用彼此的RSS Feed,自动的显示网站联盟中其他站点上的最新信息,这就叫着RSS的联合。这种联合就导致一个站点的内容更新越及时、RSS Feed被调用的越多,该站点的知名度就会越高,从而形成一种良性循环。

而所谓RSS聚合,就是通过软件工具的方法从网络上搜集各种RSS Feed并在一个界面中提供给读者进行阅读。这些软件可以是在线的WEB工具,如http://www.xianguo.com,http://my.netscape.com,http://my.userland.com, http://www.xmltree.com,http://www.moreover.com,http://www.oreillynet.com/meerkat, http://www.bbreader.com 等,当然,可以使用我们以上提到的客户端工具。

④ 如何用Java实现一个基于Web的RSS生成器

RSS 是一个XML的格式 。。。。。。。。按其标准,使用很多方法可以生成,,,,最简单使用String 就可以 。。。。。。。。。。

⑤ java解析rss如何过滤非法字符

过滤非法字符:

/**

* 替换xml特殊字符,

* 过滤非法字符 HJX

* @param s

* @return

*/

public static String format(String s){

String reg = "[//x00-//x08//x0b-//x0c//x0e-//x1f]";//过滤掉非法字符

if ( s == null )

return "";

else{

s=s.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll("/"","&quot;").replaceAll(reg,"");;

return s;

}

}

⑥ 如何使用java代码获取RSS中信息

以下内容来自互联网,版权归原作者,仅供参考:
以下是一个RSS文件的标准结构:

<rss version="2.0">
<channel>
<title>...</title>
<link>...</link>
<description>...</description>
<right>...</right>
<generator>...</generator>
<lastBuildDate>...</lastBuildDate>
<image>...</image>
<item>...</item>
<item>...</item>
...
<item>...</item>
<item>...</item>
</channel>
</rss>

其中rss元素是其根元素,它吧所有的内含信息包含在一个频道<channel>中,频道有许多meta信息,就是出现 在<item>前面的所有子元素。而rss中的所有摘要,都以<item>元素的形式出现,一个<channel> 可以有多个<item>。每个<item>同样有元信息,最重要的是描述<description>和链 接<link>。
现在有很多工具可以生成RSS,事实上,因为本质上RSS是一个XML文件,所以你完全可以以手工编写XML 文件的形式编写RSS,但是还是推荐用工具来简化操作和减少错误,我最喜欢用的工具是:http://www.onlinedown.net/soft /73066.htm
其实,不仅仅RSS阅读器可以获取RSS信息,我们用java API也是可以的。比较有名的是sourceforge的rsslib4j 包,我们这里就展示这个包的用法:
这个包可以到http://sourceforge.net/projects/rsslib4j/ 去下,对应的javadoc地址是http://rsslib4j.sourceforge.net/javadoc/
实验部分:
我们演示2个例子,一个是读取本地rss文件的信息,一个是读取网络上某rss文件的信息:
首先我们开发了一个工具类,这个类的工具方法可以分离出相关信息并且转为字符串形式:

package com.charles.learnrss;

import java.util.List;

import org.gnu.stealthp.rsslib.RSSChannel;
import org.gnu.stealthp.rsslib.RSSHandler;
import org.gnu.stealthp.rsslib.RSSImage;
import org.gnu.stealthp.rsslib.RSSItem;

/*
* This file is confidential by Charles.Wang
* Copyright belongs to Charles.wang
* You can make contact with Charles.Wang ([email protected])
*/

public class RSSInfoRetriever {

public static String getRSSInfo(RSSHandler handler){

StringBuffer rssInfo = new StringBuffer();

//取得rss提要的频道信息(Channel)
RSSChannel channel = handler.getRSSChannel();

//Part1: 分离出rss频道的元信息
//(1)频道的标题
String titleInfo = channel.getTitle();
//(2)频道的链接信息
String linkInfo = channel.getLink();
//(3)频道的描述信息
String descriptionInfo = channel.getDescription();
//(4)频道使用的语言
String languageInfo = channel.getLanguage();
//(5)频道版权信息
String rightInfo = channel.getCopyright();
//(6)频道的generator的信息
String generatorInfo = channel.getGenerator();
//(7)频道的image信息
RSSImage channelImage = channel.getRSSImage();
String channelImageUrl = channelImage.getUrl();

rssInfo.append("频道标题: "+titleInfo+"n");
rssInfo.append("频道相关Link信息: "+linkInfo+"n");
rssInfo.append("频道描述信息: "+descriptionInfo+"n");
rssInfo.append("频道使用的语言: "+languageInfo+"n");
rssInfo.append("频道版权信息: "+rightInfo+"n");
rssInfo.append("频道产生器信息: "+generatorInfo+"n");
rssInfo.append("频道图片URL: "+channelImageUrl+"n");

//Part2: 分离出rss频道的所有摘要(feed),这里用item表示
List channelItems = channel.getItems();
int itemSize= channelItems.size();
if(itemSize >=1){
rssInfo.append("n");
rssInfo.append("一共有 "+itemSize+"个摘要在这个频道中");
rssInfo.append("n");
for (int i=0;i<itemSize;i++){
int itemNo = i+1;
RSSItem item = (RSSItem)channelItems.get(i);

rssInfo.append("n");
rssInfo.append("摘要"+itemNo+":");

//(1)摘要的作者
String itemAuthor = item.getAuthor();
//(2)摘要的标题
String itemTitle = item.getTitle();
//(3)摘要的描述
String itemDescription = item.getDescription();
//(4)摘要的链接
String itemLink = item.getLink();
//(5)摘要的发布日期
String itemPubDate = item.getPubDate();

rssInfo.append("作者: "+itemAuthor+"n");
rssInfo.append("标题: "+itemTitle+"n");
rssInfo.append("描述: "+itemDescription+"n");
rssInfo.append("链接: "+itemLink+"n");
rssInfo.append("发布日期: "+itemPubDate+"n");

rssInfo.append("n");
}
}

return rssInfo.toString();

}
}

然后我们写了一个驱动类,这个驱动类封装了个实验:

package com.charles.demo;

import java.net.URL;

import org.gnu.stealthp.rsslib.RSSChannel;
import org.gnu.stealthp.rsslib.RSSException;
import org.gnu.stealthp.rsslib.RSSHandler;
import org.gnu.stealthp.rsslib.RSSParser;

import com.charles.learnrss.RSSInfoRetriever;

/**
*
* Description:
*
* @author charles.wang
* @created May 10, 2012 9:07:13 AM
*
*/
public class RSSInfoRetrieverDemo {

// 这里定义一个本地的rss摘要,(对应我的博客空间)
public static final String localRSS = "charles.rss";

//这里定义一个远程的rss摘要的地址(对应人民网)
public static final String remoteRSS="http://www.people.com.cn/rss/politics.xml";

public static void main(String[] args) throws Exception {

// DEMO 1: 让RSSParser去解析本地某个rss文件
// 取得本地的rss
RSSHandler localRSSHandler = new RSSHandler();
RSSParser.parseXmlFile(localRSS, localRSSHandler, false);
// 取得rss元素的信息并且打印在控制台上
String localRSSInfo=RSSInfoRetriever.getRSSInfo(localRSSHandler);
System.out.println("*************Charles博客的 rss信息如下****************");
System.out.println(localRSSInfo);
System.out.println("****************************************************");

// DEMO 2: 让RSSParser去解析远程rss的url
// 取得远程的rss
RSSHandler remoteRSSHandler = new RSSHandler();
RSSParser.parseXmlFile(new URL(remoteRSS), remoteRSSHandler, false);
// 取得rss元素的信息并且打印在控制台上
String remoteRSSInfo=RSSInfoRetriever.getRSSInfo(remoteRSSHandler);
System.out.println("****************人民网的 rss信息如下******************");
System.out.println(remoteRSSInfo);
System.out.println("****************************************************");

}

}

实验:读取本地的rss文件(charles.rss)
这个文件部分内容为:
双击代码全选

<rss version="2.0">
<channel>
<title>
<![CDATA[ 平行线的凝聚-51CTO技术博客 ]]>
</title>
<link>
<![CDATA[ http://supercharles888.blog.51cto.com ]]>
</link>
<description>
<![CDATA[ Latest 20 blogs of charles_wang8888 ]]>
</description>
<right>
<![CDATA[ Copyright(C) 51CTO技术博客-领先的IT技术博客 ]]>
</right>
<generator>
<![CDATA[ 51CTO BLOG by 51CTO Studio ]]>
</generator>
<lastBuildDate>Thu, 01 Jan 1970 00:00:00 GMT</lastBuildDate>
<image>
<url>
<![CDATA[ http://img1.51cto.com/image/skin/1/rss.gif ]]>
</url>
<title>
<![CDATA[ 51CTO BLOG ]]>
</title>
<link>
<![CDATA[ http://blog.51cto.com ]]>
</link>
<description>
<![CDATA[ 51CTO技术博客-领先的IT技术博客 ]]>
</description>
</image>
<item>
<title>
<![CDATA[ 跨域访问的解决方案(非HTML5的方法1:JSONP) ]]>
</title>
<description>
<![CDATA[
跨域访问一直是困扰很多开发者的问题之一。因为涉及到安全性问题,所以跨域访问默认是不可以进行的,否则假设今天我写了一段js去更改google的图标,明天他写了一段代码去吧google首页的文字全部变成梵文,那还得..【<a href="http://supercharles888.blog.51cto.com/609344/856886" target="_blank">继续阅读全文</a>】
]]>
</description>
<link>
<![CDATA[
http://supercharles888.blog.51cto.com/609344/856886
]]>
</link>
<author>
<![CDATA[ charles_wang8888 ]]>
</author>
<category>
<![CDATA[ Web开发 ]]>
</category>
<pubDate>Tue, 08 May 2012 04:02:42 GMT</pubDate>
</item>

...
</channel>
</rss>

⑦ 请问在java做的门户网站里怎么使用RSS

。。。。分太少了~~~

⑧ java如何产生自己网站的rss

jdom 或者 dom4j

热点内容
sql语句执行错误 发布:2025-01-18 03:21:49 浏览:650
数据库双引号 发布:2025-01-18 03:10:20 浏览:78
学java和php 发布:2025-01-18 03:01:03 浏览:451
怎么开服务器的端口 发布:2025-01-18 02:54:23 浏览:647
别克君越编程 发布:2025-01-18 02:32:24 浏览:913
ftp游戏下载网站 发布:2025-01-18 02:09:04 浏览:628
python调用另一个文件中的函数 发布:2025-01-18 02:03:54 浏览:597
mysql存储html 发布:2025-01-18 01:57:24 浏览:129
双ip服务器对网站优化有影响吗 发布:2025-01-18 01:56:41 浏览:246
汽车配置怎么区分自动挡 发布:2025-01-18 01:53:06 浏览:229