extern crate xml; // provided by the xml-rs crate use xml::{name::OwnedName, reader::EventReader, reader::XmlEvent}; const DOCUMENT: &str = r#" "#; fn main() -> Result<(), xml::reader::Error> { let parser = EventReader::new(DOCUMENT.as_bytes()); let tag_name = OwnedName::local("Student"); let attribute_name = OwnedName::local("Name"); for event in parser { match event? { XmlEvent::StartElement { name, attributes, .. } if name == tag_name => { if let Some(attribute) = attributes.iter().find(|&attr| attr.name == attribute_name) { println!("{}", attribute.value); } } _ => (), } } Ok(()) }