首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 實現 Web 版 RSS 閱讀器(三):RSS/Atom 格式差異與 rsslib4j 解析實戰

     編輯:Java 相關知識

RSS 與 Atom 兩大主流格式對比

訂閱源主要分兩派:

特性RSS 2.0Atom 1.0
根元素<rss version="2.0"><feed xmlns="https://www.w3.org/2005/Atom">
頻道標題<title><title>
頻道鏈接<link><link rel="alternate" href="..."/>
文章容器<item><entry>
文章標題<title><title>
文章鏈接<link><link rel="alternate" href="..."/>
發布時間<pubDate> (RFC822)<updated> (ISO 8601)
內容/摘要<description><content type="html"> / <summary>
典型站點CSDN、新浪、網易博客園、GitHub、YouTube

結構相似,節點表達式不同。統一解析需抽象公共模型 (如 Rome 的 SyndFeed)。

開源庫選型:Rome vs rsslib4j

  • Rome:Apache 專案,支援 RSS 0.9x/1.0/2.0 + Atom 0.3/1.0,模型豐富 (SyndFeed/SyndEntry),但體積較大。
  • rsslib4j:輕量、相容性好,僅支援 RSS 0.9x/1.0/2.0,不支援 Atom。

本篇先用 rsslib4j-0.2.jar 驗證 RSS 解析流程。

核心解析代碼

package com.tgb.rssreader.manager;

import org.gnu.stealthp.rsslib.*;
import java.net.URL;
import java.util.List;

public class Rsslib4jReadRss {
    public void parse(String rssUrl) {
        try {
            URL url = new URL(rssUrl);
            RSSParser parser = new RSSParser();
            parser.setXmlResource(url); // 內部會建立連接
            RSSHandler handler = new RSSHandler();
            parser.parse(handler);
            RSSChannel channel = handler.getChannel();
            
            System.out.println("頻道標題: " + channel.getTitle());
            System.out.println("頻道鏈接: " + channel.getLink());
            
            List<RSSItem> items = channel.getItems();
            for (int i = 0; i < Math.min(1, items.size()); i++) { // 測試只取第一條
                RSSItem item = items.get(i);
                System.out.println("標題: " + item.getTitle());
                System.out.println("鏈接: " + item.getLink());
                System.out.println("描述: " + item.getDescription());
                System.out.println("發布時間: " + item.getPubDate());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

測試結果與現存問題

控制台輸出網易博客解析成功

  • ✅ 網易博客 (RSS) 解析正常。
  • ❌ CSDN 博客拋出 403 Forbidden (拒絕 Java UA)。
  • ❌ 部分站點 link/language 返回 null (Channel 節點順序導致解析遺漏)。
  • ❌ 無摘要方法,description 含 HTML 標籤難直接展示。

下一步

下一篇將自製 myrsslib4j,針對性修復上述三大問題,並打包為獨立 JAR 供項目使用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved