rss/
category.rs

1use quick_xml::{XmlReader, Element};
2
3use fromxml::FromXml;
4use error::Error;
5
6/// A representation of the `<category>` element.
7#[derive(Debug, Default, Clone, PartialEq)]
8pub struct Category {
9    /// The name of the category.
10    pub name: String,
11    /// The domain for the category.
12    pub domain: Option<String>,
13}
14
15impl FromXml for Category {
16    fn from_xml<R: ::std::io::BufRead>(mut reader: XmlReader<R>,
17                                       element: Element)
18                                       -> Result<(Self, XmlReader<R>), Error> {
19        let mut domain = None;
20
21        for attr in element.attributes().with_checks(false).unescaped() {
22            if let Ok(attr) = attr {
23                if attr.0 == b"domain" {
24                    domain = Some(try!(String::from_utf8(attr.1.into_owned())));
25                    break;
26                }
27            }
28        }
29
30        let content = element_text!(reader).unwrap_or_default();
31
32        Ok((Category {
33            name: content,
34            domain: domain,
35        }, reader))
36    }
37}