43个版本 (21个稳定版)

2.0.8 2024年5月11日
2.0.7 2024年1月13日
2.0.6 2023年8月12日
2.0.5 2023年7月26日
0.0.1 2015年2月12日

#28解析器实现

Download history 8385/week @ 2024-05-03 8265/week @ 2024-05-10 8179/week @ 2024-05-17 8747/week @ 2024-05-24 8415/week @ 2024-05-31 7382/week @ 2024-06-07 8247/week @ 2024-06-14 8351/week @ 2024-06-21 7633/week @ 2024-06-28 7638/week @ 2024-07-05 7628/week @ 2024-07-12 7865/week @ 2024-07-19 7935/week @ 2024-07-26 7780/week @ 2024-08-02 8537/week @ 2024-08-09 6420/week @ 2024-08-16

每月31,894 次下载
用于 104 个crate(86个直接使用)

MIT/Apache

215KB
3.5K SLoC

rss

Build status Codecov crates.io Status Docs

用于反序列化和序列化RSS网页内容聚合格式的库。

支持版本

支持读取以下RSS版本

  • RSS 0.90
  • RSS 0.91
  • RSS 0.92
  • RSS 1.0
  • RSS 2.0

写入支持仅限于RSS 2.0。

文档

用法

将依赖项添加到您的 Cargo.toml

[dependencies]
rss = "2.0"

读取

任何实现了 BufRead 特性的对象都可以读取频道。

从文件中

use std::fs::File;
use std::io::BufReader;
use rss::Channel;

let file = File::open("example.xml").unwrap();
let channel = Channel::read_from(BufReader::new(file)).unwrap();

从缓冲区中

注意:此示例需要 reqwest crate。

use std::error::Error;
use rss::Channel;

async fn example_feed() -> Result<Channel, Box<dyn Error>> {
    let content = reqwest::get("http://example.com/feed.xml")
        .await?
        .bytes()
        .await?;
    let channel = Channel::read_from(&content[..])?;
    Ok(channel)
}

写入

任何实现了 Write 特性的对象都可以写入频道,或使用 ToString 特性转换为XML字符串。

注意:写入频道不会对XML实体进行转义。

use rss::Channel;

let channel = Channel::default();
channel.write_to(::std::io::sink()).unwrap(); // // write to the channel to a writer
let string = channel.to_string(); // convert the channel to a string

创建

提供了构建方法来辅助创建频道。

注意:这需要启用 builders 特性,该特性默认启用。

use rss::ChannelBuilder;

let channel = ChannelBuilder::default()
    .title("Channel Title")
    .link("http://example.com")
    .description("An RSS feed.")
    .build()
    .unwrap();

验证

提供了验证方法来验证频道内容是否符合RSS规范。

注意:这需要启用 validation 特性。

use rss::Channel;
use rss::validation::Validate;

let channel = Channel::default();
channel.validate().unwrap();

扩展

具有非默认名称空间的元素将被视为扩展。扩展存储在 Channel.extensionsItem.extensions 中。

为了方便起见,Dublin CoreSyndicationiTunes 扩展被提取到结构中,并存储在频道和项目上的属性中。

无效的聚合源

为了尽可能解析无效的聚合源,rss 将默认将RSS 2.0规范中声明的“必需”元素设置为空字符串。

许可证

根据以下之一授权

任选。

依赖项

~5.5MB
~157K SLoC