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§
- Body
Iter - Date
Created - Date
Modified - Expansion
State - Head
Iter - Iter
- Opml
Iter - Outline
Iter - Owner
Email - Owner
Name - Title
- Unknown
- Vert
Scroll State - Window
Bottom - Window
Left - Window
Right - Window
Top