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/zh-hk/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

發表回復

登錄後才能評論