Module opml

Source
Expand description

OPML is an XML format for outlines. It may be used to export and import a list of feeds.

Use Iter as the starting type for parsing a feed.

§Examples

§OPML

use readfeed::opml::{self, BodyElem, Elem, OpmlElem, OutlineElem};

let input = r#"
<opml>
<body>
<outline
  text="Example Blog Site"
  title="Example Blog"
  description="An example."
  type="rss"
  version="RSS"
  htmlUrl="https://blog.example.com/"
  xmlUrl="https://blog.example.com/index.xml"
/>
</body>
</opml>
"#;

let mut iter = opml::Iter::new(input);

let Some(Elem::Opml(mut opml_iter)) = iter.next() else {
    panic!();
};

let Some(OpmlElem::Body(mut body_iter)) = opml_iter.next() else {
    panic!();
};

let Some(BodyElem::Outline(mut outline_iter)) = body_iter.next() else {
    panic!();
};

assert_eq!(Some("Example Blog Site"), outline_iter.text().map(|v| v.as_str()));
assert_eq!(Some("Example Blog"), outline_iter.title().map(|v| v.as_str()));
assert_eq!(Some("An example."), outline_iter.description().map(|v| v.as_str()));
assert_eq!(Some("rss"), outline_iter.ty().map(|v| v.as_str()));
assert_eq!(Some("RSS"), outline_iter.version().map(|v| v.as_str()));
assert_eq!(Some("https://blog.example.com/"), outline_iter.html_url().map(|v| v.as_str()));
assert_eq!(Some("https://blog.example.com/index.xml"), outline_iter.xml_url().map(|v| v.as_str()));

assert_eq!(None, body_iter.next());
assert_eq!(None, opml_iter.next());
assert_eq!(None, iter.next());

Structs§

BodyIter
DateCreated
DateModified
ExpansionState
HeadIter
Iter
OpmlIter
OutlineIter
OwnerEmail
OwnerName
Title
Unknown
VertScrollState
WindowBottom
WindowLeft
WindowRight
WindowTop

Enums§

BodyElem
Elem
HeadElem
OpmlElem
OutlineElem