Crates.io | rss |
lib.rs | rss |
version | 2.0.9 |
source | src |
created_at | 2015-02-12 15:35:48.123741 |
updated_at | 2024-08-27 22:59:41.852644 |
description | Library for serializing the RSS web content syndication format |
homepage | |
repository | https://github.com/rust-syndication/rss |
max_upload_size | |
id | 1389 |
size | 227,102 |
Library for deserializing and serializing the RSS web content syndication format.
Reading from the following RSS versions is supported:
Writing support is limited to RSS 2.0.
Add the dependency to your Cargo.toml
.
[dependencies]
rss = "2.0"
A channel can be read from any object that implements the BufRead
trait.
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();
Note: This example requires 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)
}
A channel can be written to any object that implements the Write
trait or converted to an XML string using the ToString
trait.
Note: Writing a channel does not perform any escaping of XML entities.
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
Builder methods are provided to assist in the creation of channels.
Note: This requires the builders
feature, which is enabled by default.
use rss::ChannelBuilder;
let channel = ChannelBuilder::default()
.title("Channel Title")
.link("http://example.com")
.description("An RSS feed.")
.build()
.unwrap();
Validation methods are provided to validate the contents of a channel against the RSS specification.
Note: This requires enabling the validation
feature.
use rss::Channel;
use rss::validation::Validate;
let channel = Channel::default();
channel.validate().unwrap();
Elements which have non-default namespaces will be considered extensions. Extensions are stored in Channel.extensions
and Item.extensions
.
For convenience, Dublin Core, Syndication and iTunes extensions are extracted to structs and stored in as properties on channels and items.
As a best effort to parse invalid feeds rss
will default elements declared as "required" by the RSS 2.0 specification to an empty string.
Licensed under either of
at your option.