Skip to main content

Crate feed_parser

Crate feed_parser 

Source
Expand description

This module contains various parsers used in the feed-parser library.

The parsers module provides functionality to parse different types of feed formats, such as RSS and Atom. Each parser is responsible for handling the specific details of its respective feed format, ensuring that the feed data is correctly interpreted and converted into a standardized format for further processing.

§Quick Start

use feed_parser::parsers::{Feed, rss2};

let rss_data = r#"
<rss version="2.0">
    <channel>
        <title>RSS Title</title>
        <link>http://www.example.com/main.html</link>
        <description>This is an example of an RSS feed</description>
        <item>
            <title>Item 1</title>
            <link>http://www.example.com/item1.html</link>
            <description>Item 1 description</description>
            <pubDate>2024-01-01T23:59:02Z</pubDate>
        </item>
    </channel>
</rss>
"#;
let feeds: Vec<Feed> = rss2::parse(rss_data).unwrap();
assert_eq!(feeds[0].title, "Item 1");
assert_eq!(feeds[0].link, "http://www.example.com/item1.html");
assert_eq!(feeds[0].description.clone().unwrap(), "Item 1 description");

§Modules

  • rss1: Contains the RSS1.0 parser implementation.
  • rss2: Contains the RSS2.0 parser implementation.
  • atom: Contains the Atom parser implementation.

§Errors

Every parser returns ParseResult, so malformed input is reported rather than panicking. ParseError distinguishes ill-formed XML, entries that are missing a required field, and documents that end inside an open entry.

use feed_parser::parsers::{errors::ParseError, rss2};

// An <item> with no <title> cannot become a `Feed`.
let rss_data = r#"
<rss version="2.0">
    <channel>
        <item><description>no title here</description></item>
    </channel>
</rss>
"#;
match rss2::parse(rss_data) {
    Err(ParseError::MissingField(field)) => assert_eq!(field, "title"),
    other => panic!("expected a MissingField error, got {other:?}"),
}

Modules§

parsers