Fix CDATA handling, add relevant test, update CHANGELOG, bump version to 0.9.1.
This commit is contained in:
parent
1634c7dbe5
commit
4f588f615d
3 changed files with 20 additions and 2 deletions
|
|
@ -1,3 +1,6 @@
|
||||||
|
Version 0.9.1, released 2018-05-29:
|
||||||
|
* Fixes
|
||||||
|
* Lumi fixed CDATA handling, minidom will not unescape CDATA bodies anymore.
|
||||||
Version 0.9.0, released 2018-04-10:
|
Version 0.9.0, released 2018-04-10:
|
||||||
* Small changes
|
* Small changes
|
||||||
- Upgrade quick_xml to 0.12.1
|
- Upgrade quick_xml to 0.12.1
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "minidom"
|
name = "minidom"
|
||||||
version = "0.9.0"
|
version = "0.9.1"
|
||||||
authors = [
|
authors = [
|
||||||
"lumi <lumi@pew.im>",
|
"lumi <lumi@pew.im>",
|
||||||
"Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>",
|
"Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>",
|
||||||
|
|
|
||||||
|
|
@ -414,13 +414,20 @@ impl Element {
|
||||||
to.append_child(elem);
|
to.append_child(elem);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Event::Text(s) | Event::CData(s) => {
|
Event::Text(s) => {
|
||||||
let text = s.unescape_and_decode(reader)?;
|
let text = s.unescape_and_decode(reader)?;
|
||||||
if text != "" {
|
if text != "" {
|
||||||
let mut current_elem = stack.last_mut().unwrap();
|
let mut current_elem = stack.last_mut().unwrap();
|
||||||
current_elem.append_text_node(text);
|
current_elem.append_text_node(text);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
Event::CData(s) => {
|
||||||
|
let text = reader.decode(&s).into_owned();
|
||||||
|
if text != "" {
|
||||||
|
let mut current_elem = stack.last_mut().unwrap();
|
||||||
|
current_elem.append_text_node(text);
|
||||||
|
}
|
||||||
|
},
|
||||||
Event::Eof => {
|
Event::Eof => {
|
||||||
break;
|
break;
|
||||||
},
|
},
|
||||||
|
|
@ -988,3 +995,11 @@ fn parses_spectest_xml() { // From: https://gitlab.com/lumi/minidom-rs/issues/8
|
||||||
let mut reader = EventReader::from_str(xml);
|
let mut reader = EventReader::from_str(xml);
|
||||||
let _ = Element::from_reader(&mut reader).unwrap();
|
let _ = Element::from_reader(&mut reader).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn does_not_unescape_cdata() {
|
||||||
|
let xml = "<test><![CDATA['>blah<blah>]]></test>";
|
||||||
|
let mut reader = EventReader::from_str(xml);
|
||||||
|
let elem = Element::from_reader(&mut reader).unwrap();
|
||||||
|
assert_eq!(elem.text(), "'>blah<blah>");
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue