佛山网站建设的品牌,装修效果图软件app哪个好,住房城乡建设部官方网站,郑州好的建网站公司概述
在豆瓣等网站里#xff0c;经常会看到如下订阅Button#xff1a; 本文记录一下相关概念学习成果。
Feed
Feed#xff1a;消息来源#xff0c;一种资料格式#xff0c;网站通过它将最新资讯传播给用户。用户能够订阅某网站的前提条件是网站有提供Feed。Feed被很多…概述
在豆瓣等网站里经常会看到如下订阅Button 本文记录一下相关概念学习成果。
Feed
Feed消息来源一种资料格式网站通过它将最新资讯传播给用户。用户能够订阅某网站的前提条件是网站有提供Feed。Feed被很多会经常更新内容的网站采用如博客网站、内容网站、新闻网站。
RSS
将Feed汇流于一处称为聚合(aggregation)用于聚合的软件称为聚合器(aggregator)。
Really Simple Syndication简易信息聚合是一种消息来源格式规范用以发布经常更新数据的网站如博客文章、新闻、音频或视频的网摘。
RSS文件又称做摘要、网摘、更新、频道包含全文或节选文字再加上一定的属性数据。能够使发行者自动地发布数据同时也使读者能更够定期更新他们喜欢的网站或是聚合不同网站的网摘。
标准的XML档式可允许信息在一次发布后通过不同的程序阅览。用户借由将网摘输入RSS阅读器或是用鼠标点取浏览器上指向订阅程序的RSS小图标之URI来订阅网摘。
RSS缩写可以是以下三种中任一种
Really Simple SyndicationRSS 2.0RDFResource Description FrameworkSite SummaryRSS 0.911.0Rich Site SummaryRSS 0.9 and 1.0
示例
RSS文件是一个XML根节点是一个带有版本号的rss节点根节点以下是一个单一的channel节点。channel下可以有任意多个item一个item表示一个具体的订阅项目如文章、新闻。
实例文件
?xml version1.0?rss version2.0channeltitleLiftoff News/titlelinkhttp://liftoff.msfc.nasa.gov//linkdescriptionLiftoff to Space Exploration./descriptionlanguageen-us/languagepubDateTue, 10 Jun 2003 04:00:00 GMT/pubDatelastBuildDateTue, 10 Jun 2003 09:41:01 GMT/lastBuildDatedocshttp://blogs.law.harvard.edu/tech/rss/docsgeneratorWeblog Editor 2.0/generatormanagingEditoreditorexample.com/managingEditorwebMasterwebmasterexample.com/webMasteritemtitleStar City/titlelinkhttp://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp/linkdescriptionHow do Americans get ready to work with Russians aboard the International Space Station? They take a crash course in culture, language and protocol at Russias lt;a hrefhttp://howe.iki.rssi.ru/GCTC/gctc_e.htmgt;Star Citylt;/agt;./descriptionpubDateTue, 03 Jun 2003 09:39:21 GMT/pubDateguidhttp://liftoff.msfc.nasa.gov/2003/06/03.html#item573/guid/item/channel
/rssRSS规范
RSS规范的主要版本
RSS 0.91是一个精简的RSS形式由网景公司所发行同时也是原创的排行第一的版本编号由Dave Winer从Userland软件所制作。网景公司的版本现在被称为Rich Site Summary即RDF格式相对而言比较不方便使用。RSS 0.92更容易与Winer的RSS 0.91及其他版本兼容和RSS 0.90不兼容。RSS 2.0主要的改变在这个版本里使用伸的机制。
RSS阅读器
专门用来订阅网站Feed更新的软件一般被称为Feed阅读器、RSS阅读器、新闻阅读器等。RSS阅读器会定期检阅是否有更新并拉取到本地供用户阅读。
根据平台(Windows或Mac)、App(iOS或Android)不同RSS阅读器有很多很多
irreaderReeder 4
Atom
借鉴各种版本RSS的使用经验被许多的聚合工具广泛使用在发布和使用上。Atom供稿格式设计作为RSS的替代品而Atom出版协定用来取代现有的多种发布方式如Blogger API和LiveJournal XML-RPC Client/Server Protocol。Google提供的多种服务正在使用Atom如Google Data APIGData。
Atom是IETF的建议标准包括两个标准
Atom供稿格式Atom Syndication Format用于网站消息来源基于XML的文档格式RFC 4287Atom出版协定Atom Publishing Protocol简称AtomPub或APP用于新增及修改网络资源基于HTTP协议RFC 5023。
Atom vs RSS
发展Atom的动机在于广泛应用RSS 2.0时所遇到的问题。为降低开发支持Web聚合应用的难度下面列出Atom 1.0所克服的RSS 2.0几个主要问题
RSS 2.0可能包含文本或经过编码的HTML内容却没有提供明确的区分办法而Atom则提供明确的标签(typed)。RSS 2.0的description标签可以包含全文或摘要尽管该标签的英文含义为描述或摘要。Atom则分别提供summary和content标签用以区分摘要和内容允许在summary中添加非文本内容。RSS 2.0存在多种非标准形式的应用而Atom具有统一的标准这便于内容的聚合和发现。Atom有符合XML标准的命名空间RSS 2.0却没有。Atom通过XML内置xml:base标签来指示相对地址(URI)RSS 2.0则无相应的机制区分相对地址和绝对地址。Atom通过XML内置xml:lang而RSS采用自己的language标签。Atom强制为每个条目设定唯一的ID这将便于内容的跟踪和更新。Atom 1.0允许条目单独成为文档RSS 2.0则只支持完整的种子文档这可能产生不必要的复杂性和带宽消耗。Atom按照RFC 3339标准ISO 8601标准子集表示时间 而RSS 2.0中没有指定统一的时间格式。Atom 1.0具有在IANA注册的MIME类型而RSS 2.0所使用的application/rssxml并未注册。Atom 1.0标准包括一个XML schemaRSS 2.0却没有。Atom是IETF组织标准化程序下的一个开放的发展中标准RSS 2.0则不属于任何标准化组织且不是开放版权。
ROME
参考官网以及GitHubROME是一个Java框架可用于RSS及Atom两类Feed。Rome支持RSS各版本0.90、0.91、0.92、0.93、0.94、1.0和2.0及Atom 0.3、1.0版本。
引入依赖
dependencygroupIdcom.rometools/groupIdartifactIdrome/artifactIdversion2.1.0/version
/dependency实战
发布RSS
public static void publish() throws IOException, FeedException {SyndContent desc new SyndContentImpl();desc.setType(text/html);desc.setValue(ES系列);SyndCategory category new SyndCategoryImpl();category.setName(ES系列);ListSyndCategory categories List.of(category);SyndEntry entry new SyndEntryImpl();entry.setTitle(ES系列);entry.setLink(https://blog.csdn.net/lonelymanontheway/category_12594356.html);entry.setDescription(desc);entry.setCategories(categories);SyndFeed feed new SyndFeedImpl();feed.setFeedType(rss_1.0);feed.setTitle(johnny CSDN blog);feed.setLink(https://blog.csdn.net/lonelymanontheway);feed.setDescription(rome rss test);feed.setEntries(List.of(entry));Writer writer new FileWriter(xyz.xml);SyndFeedOutput syndFeedOutput new SyndFeedOutput();syndFeedOutput.output(feed, writer);writer.close();
}订阅RSS
public static void query() throws IOException, FeedException {URL feedSource new URL(https://www.douban.com/feed/subject/36686001/reviews);SyndFeedInput input new SyndFeedInput();SyndFeed feed input.build(new XmlReader(feedSource));log.info(feed:{}, feed);
}参考
好用的RSS阅读器