rss订阅用java如何实现,rss java

本文目录一览:

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

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

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

以下内容来自互联网,版权归原作者,仅供参考:

以下是一个RSS文件的标准结构:

rss version=”2.0″

channel

title…/title

link…/link

description…/description

copyright…/copyright

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,但是还是推荐用工具来简化操作和减少错误,我最喜欢用的工具是: /73066.htm

其实,不仅仅RSS阅读器可以获取RSS信息,我们用java API也是可以的。比较有名的是sourceforge的rsslib4j 包,我们这里就展示这个包的用法:

这个包可以到 去下,对应的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 (charles_wang888@126.com)

*/

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 copyrightInfo = 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(“频道版权信息: “+copyrightInfo+”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;iitemSize;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=””;

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[ ]]

/link

description

![CDATA[ Latest 20 blogs of charles_wang8888 ]]

/description

copyright

![CDATA[ Copyright(C) 51CTO技术博客-领先的IT技术博客 ]]

/copyright

generator

![CDATA[ 51CTO BLOG by 51CTO Studio ]]

/generator

lastBuildDateThu, 01 Jan 1970 00:00:00 GMT/lastBuildDate

image

url

![CDATA[ ]]

/url

title

![CDATA[ 51CTO BLOG ]]

/title

link

![CDATA[ ]]

/link

description

![CDATA[ 51CTO技术博客-领先的IT技术博客 ]]

/description

/image

item

title

![CDATA[ 跨域访问的解决方案(非HTML5的方法1:JSONP) ]]

/title

description

![CDATA[

跨域访问一直是困扰很多开发者的问题之一。因为涉及到安全性问题,所以跨域访问默认是不可以进行的,否则假设今天我写了一段js去更改google的图标,明天他写了一段代码去吧google首页的文字全部变成梵文,那还得..【a href=”” target=”_blank”继续阅读全文/a】

]]

/description

link

![CDATA[

]]

/link

author

![CDATA[ charles_wang8888 ]]

/author

category

![CDATA[ Web开发 ]]

/category

pubDateTue, 08 May 2012 04:02:42 GMT/pubDate

/item

/channel

/rss

Rss订阅 JAVA问题

你的机器上没有安装java环境JDK,或者是安装了JDK没有进行环境变量配置。

Java环境变量:

CLASSPATH .;%java_home%\lib

Path %java_home%\bin;

JAVA_HOME C:\Program Files\Java\jdk1.5.0_05

你可以参考这个链接进行配置

在阅读RSS使用java的问题问题,怎么解决

可能是XML的编码原因,百度的关键词订阅是GB2312 而分类订阅是UTF-8。

XmlReader reader = new XmlReader(url);

System.out.println(“Rss源的编码格式为:” + reader.getEncoding());

后来想了想可能页面信息是UTF-8

转变思路

先下载页面,把RSS获取下来,再去解析,就OK了.

要用javaee实现rss的订阅,大家推荐点书籍或是资料

工具不重要,人才最重要

rss订阅只要生成对应格式的xml就可以了

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/152669.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-13 06:05
下一篇 2024-11-13 06:05

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29
  • Java任务下发回滚系统的设计与实现

    本文将介绍一个Java任务下发回滚系统的设计与实现。该系统可以用于执行复杂的任务,包括可回滚的任务,及时恢复任务失败前的状态。系统使用Java语言进行开发,可以支持多种类型的任务。…

    编程 2025-04-29
  • 如何实现图像粘贴到蒙版

    本文将从多个方面介绍图像粘贴到蒙版的实现方法。 一、创建蒙版 首先,在HTML中创建一个蒙版元素,用于接收要粘贴的图片。 <div id=”mask” style=”widt…

    编程 2025-04-29

发表回复

登录后才能评论