You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.1 KiB
Rust
45 lines
1.1 KiB
Rust
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#"<tag1 att1 = "test">
|
|
<tag2><!--Test comment-->Test</tag2>
|
|
<tag2>
|
|
Test 2
|
|
</tag2>
|
|
</tag1>"#;
|
|
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);
|
|
} |