improve parser in reqprops to take into account not found props
This commit is contained in:
parent
b4cb78c676
commit
60e0bf76a0
@ -164,42 +164,30 @@ impl ReqProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn parse(&self, xml: String, multiple: bool) -> Vec<ObjProps> {
|
fn parse(&self, xml: String, multiple: bool) -> Vec<ObjProps> {
|
||||||
dbg!(xml.clone());
|
|
||||||
let cursor = Cursor::new(xml);
|
let cursor = Cursor::new(xml);
|
||||||
let parser = EventReader::new(cursor);
|
let parser = EventReader::new(cursor);
|
||||||
|
|
||||||
let mut should_get = false;
|
|
||||||
let mut values: Vec<ObjProps> = vec![];
|
let mut values: Vec<ObjProps> = vec![];
|
||||||
|
|
||||||
let mut iter = self.xml_balises.iter();
|
let mut should_get = false;
|
||||||
let mut val = iter.next();
|
let mut val: String = String::from("");
|
||||||
let mut content = ObjProps::new();
|
let mut content = ObjProps::new();
|
||||||
|
|
||||||
for event in parser {
|
for event in parser {
|
||||||
match event {
|
match event {
|
||||||
Ok(XmlEvent::StartElement { name, .. }) => {
|
Ok(XmlEvent::StartElement { name, .. }) => {
|
||||||
dbg!(name.clone().local_name);
|
should_get = {
|
||||||
if let Some(v) = val.clone() {
|
if self.xml_balises.clone().contains(&name.local_name) {
|
||||||
should_get = &name.local_name == v;
|
val = name.local_name.clone();
|
||||||
|
true
|
||||||
} else {
|
} else {
|
||||||
// end of balises to get then start over for
|
false
|
||||||
// next object if want multiple
|
|
||||||
values.push(content.clone());
|
|
||||||
if multiple {
|
|
||||||
iter = self.xml_balises.iter();
|
|
||||||
val = iter.next();
|
|
||||||
content = ObjProps::new();
|
|
||||||
if let Some(v) = val.clone() {
|
|
||||||
should_get = &name.local_name == v;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
Ok(XmlEvent::Characters(text)) => {
|
Ok(XmlEvent::Characters(text)) => {
|
||||||
if !text.trim().is_empty() && should_get {
|
if !text.trim().is_empty() && should_get {
|
||||||
match val.unwrap().as_str() {
|
match val.as_str() {
|
||||||
"href" => {
|
"href" => {
|
||||||
content.href = Some(text.clone());
|
content.href = Some(text.clone());
|
||||||
content.relative_s = Some(
|
content.relative_s = Some(
|
||||||
@ -217,11 +205,18 @@ impl ReqProps {
|
|||||||
},
|
},
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
val = iter.next()
|
should_get = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(XmlEvent::EndElement { name, .. }) => {
|
Ok(XmlEvent::EndElement { name, .. }) => {
|
||||||
dbg!(name.clone().local_name);
|
if name.local_name == "response" {
|
||||||
|
values.push(content.clone());
|
||||||
|
if multiple {
|
||||||
|
content = ObjProps::new();
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
should_get = false;
|
should_get = false;
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user