基於java的RSS線上訂閱demo
/**
* 根據連結地址得到資料
* @param url RSS形式的xml檔案
* @throws IllegalArgumentException
* @throws FeedException
*/
public void parseXml(URL url) throws IllegalArgumentException, FeedException {
try {
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = null;
URLConnection conn;
conn = url.openConnection();
String content_encoding = conn.getHeaderField("Content-Encoding");
if (content_encoding != null && content_encoding.contains("gzip")) {
System.out.println("conent encoding is gzip");
GZIPInputStream gzin = new GZIPInputStream(conn
.getInputStream());
feed = input.build(new XmlReader(gzin));
} else {
feed = input.build(new XmlReader(conn.getInputStream()));
}
List entries = feed.getEntries();//得到所有的標題<title></title>
for(int i=0; i < entries.size(); i++) {
SyndEntry entry = (SyndEntry)entries.get(i);
System.out.println(entry.getTitle());
}
System.out.println("feed size:" + feed.getEntries().size());
} catch (IOException e) {
e.printStackTrace();
}
}
public void createXml() throws Exception {
/* 根據Channel原始碼提供的英文,Channel物件有兩個構造器,一個預設的無參構造器用於clone物件,一個是有參的
* 我們自己指定的必須使用有引數的(因為我們需要許可證),指構造方法必須要建立一個type(版本),這個type不能隨便寫,必須要以rss_開頭的版本號
* Licensed under the Apache License, Version 2.0 (the "License");
* 因為當前版本是2.0,所以就是rss_2.0,必須是rss_2.0否則會拋異常,該原始碼中寫的已經很明白。
*/
Channel channel = new Channel("rss_2.0");
channel.setTitle("channel標題");//網站標題
channel.setDescription("channel的描述");//網站描述
channel.setLink("www.shlll.net");//網站主頁連結
channel.setEncoding("utf-8");//RSS檔案編碼
channel.setLanguage("zh-cn");//RSS使用的語言
channel.setTtl(5);//time to live的簡寫,在重新整理前當前RSS在快取中可以儲存多長時間(分鐘)
channel.setCopyright("版權宣告");//版權宣告
channel.setPubDate(new Date());//RSS釋出時間
List<Item> items = new ArrayList<Item>();//這個list對應rss中的item列表
Item item = new Item();//新建Item物件,對應rss中的<item></item>
item.setAuthor("hxliu");//對應<item>中的<author></author>
item.setTitle("新聞標題");//對應<item>中的<title></title>
item.setGuid(new Guid());//GUID=Globally Unique Identifier 為當前新聞指定一個全球唯一標示,這個不是必須的
item.setPubDate(new Date());//這個<item>對應的釋出時間
item.setComments("註釋");//代表<item>節點中的<comments></comments>
//新建一個Description,它是Item的描述部分
Description description = new Description();
description.setValue("新聞主題");//<description>中的內容
item.setDescription(description);//新增到item節點中
items.add(item);//代表一個段落<item></item>,
channel.setItems(items);
//用WireFeedOutput物件輸出rss文字
WireFeedOutput out = new WireFeedOutput();
try {
System.out.println(out.outputString(channel));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (FeedException e) {
e.printStackTrace();
}
}
http://yueding920.blog.163.com/blog/static/352508902010521104722543/
相關文章
- 如何使用Java訂閱RSS Feed?Java
- php生成rss訂閱PHP
- 為 Docsify 自動生成 RSS 訂閱
- 基於 Redis 的訂閱與釋出Redis
- RSS 一種簡潔優雅的資料訂閱方式
- Java MQTT訂閱端,可訂閱萬用字元(/#)JavaMQQT字元
- java從SQS訂閱訊息 的demo, 要求保證訊息可靠投遞的例子Java
- Feedly – 超好用的 RSS 免費訂閱服務完整攻略,讓你隨時接收訂閱網站的最新訊息 - TechMoon 科技月球網站
- 基於Redis訊息的訂閱釋出應用場景Redis
- 【2019-01-16】每日生信--用RSS訂閱NCBI-PubMed文獻
- Windows 10即將“被訂閱”:關於訂閱制的痛並快樂Windows
- Leaf for Mac RSS閱讀器Mac
- 使用此開源工具在一起收取你的 RSS 訂閱源和播客開源工具
- 上線半年,蘋果的遊戲訂閱服務表現如何了?蘋果遊戲
- 蘋果遊戲訂閱服務Apple Arcade上線測試蘋果遊戲APP
- 基於SpringBoot的策略模式demoSpring Boot模式
- 基於SSM的線上外賣訂餐系統畢業設計論文【範文】SSM
- 排名前10的免費 RSS 閱讀器
- QuiteRSS: Linux桌面的RSS閱讀器UILinux
- ReadKit for Mac(全功能RSS閱讀器)Mac
- Newsflow for mac RSS新聞閱讀器Mac
- Reeder for Mac(rss新聞閱讀器)Mac
- 關於每日新聞郵件訂閱
- 使用Java接入小程式訂閱訊息!Java
- VUE踩坑之旅_定時器&&基於原型鏈的簡單訂閱釋出Vue定時器原型
- 開源基於Canal的開源增量資料訂閱&消費中介軟體
- Java 基於ArcFace人臉識別2.0 服務端DemoJava服務端
- 一個基於Android的MVP框架DemoAndroidMVP框架
- Android websocket長連線+點對點訂閱AndroidWeb
- [React Native]一款RSS閱讀器React Native
- 原生體驗!老牌 RSS 閱讀器:NetNewsWire
- openGauss 訂閱
- 釋出於訂閱訊息系統-KafkaKafka
- Redisson-關於使用訂閱數問題Redis
- 迪士尼+上40%的訂閱使用者來自美國
- sqlserver關於釋出訂閱replication_subscription的總結SQLServer
- 自己開發的線上視訊下載工具,基於Java多執行緒Java執行緒
- 基於fullcalendar製作的日程管理小demo
- 基於Liuli構建純淨的RSS公眾號資訊流