use quick_xml::Reader; use quick_xml::events::Event; use std::path::Path; use serde::Deserialize; use quick_xml::de::{from_str, DeError}; fn main() { let xml = r#" Test Test 2 "#; let filepath = Path::new(r"/home/dad/research/ClinicalTrialsDataProcessing/Parser/APIResponse.xml"); //let mut reader = Reader::from_file(filepath).unwrap(); let mut reader = Reader::from_str(xml); reader.trim_text(true); let mut count = 0; let mut buf = Vec::new(); let mut txt = Vec::new(); let mut names = Vec::new(); loop { match reader.read_event(&mut buf) { Ok(Event::Start(ref e)) => names.push(e.unescape_and_decode(&reader)), Ok(Event::Text(e)) => txt.push(e.unescape_and_decode(&reader).expect("Error!")), Err(e) => panic!("Error at position {}: {:?}", reader.buffer_position(), e), Ok(Event::Eof) => break, _ => (), } buf.clear(); } println!("Found {} start events", count); println!("Text events: {:?}", txt); println!("Text events: {:?}", names); }