CVRF::load_xml: init
Signed-off-by: Jia Chao <jiac13@chinaunicom.cn>
This commit is contained in:
parent
e0b67fe1b0
commit
4ea66d9f93
34
src/lib.rs
34
src/lib.rs
|
@ -4,9 +4,10 @@
|
|||
)]
|
||||
use std::collections::HashMap;
|
||||
use std::fs::File;
|
||||
use std::io::BufReader;
|
||||
use std::io::{self, BufReader};
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
use tracing::{debug, error, instrument, trace};
|
||||
use xml::reader::{EventReader, Events, XmlEvent};
|
||||
|
||||
struct XmlReader {
|
||||
|
@ -84,6 +85,37 @@ impl CVRF {
|
|||
vulnerability: Vulnerability::new(),
|
||||
}
|
||||
}
|
||||
|
||||
#[instrument(skip(self))]
|
||||
pub fn load_xml(&mut self, xmlfile: &str) -> io::Result<()> {
|
||||
let file = File::open(xmlfile)?;
|
||||
let mut xmlreader = XmlReader::new(file);
|
||||
|
||||
loop {
|
||||
let event = xmlreader.next();
|
||||
if xmlreader.depth != 2 {
|
||||
if event == Ok(XmlEvent::EndDocument) {
|
||||
trace!("End of the xml, break...");
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
// 这里只处理深度为 2 的子 xml 块
|
||||
match event {
|
||||
Ok(XmlEvent::StartElement { ref name, .. }) => match name.local_name.as_str() {
|
||||
_ => {}
|
||||
},
|
||||
Err(e) => {
|
||||
error!("XmlReader error: {e}");
|
||||
break;
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
// depth = 2
|
||||
|
|
Loading…
Reference in New Issue
Block a user