Fix CDATA handling, add relevant test, update CHANGELOG, bump version to 0.9.1.

This commit is contained in:
lumi 2018-05-29 15:59:36 +02:00
commit 4f588f615d
3 changed files with 20 additions and 2 deletions

View file

@ -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:
* Small changes
- Upgrade quick_xml to 0.12.1

View file

@ -1,6 +1,6 @@
[package]
name = "minidom"
version = "0.9.0"
version = "0.9.1"
authors = [
"lumi <lumi@pew.im>",
"Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>",

View file

@ -414,13 +414,20 @@ impl Element {
to.append_child(elem);
}
},
Event::Text(s) | Event::CData(s) => {
Event::Text(s) => {
let text = s.unescape_and_decode(reader)?;
if text != "" {
let mut current_elem = stack.last_mut().unwrap();
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 => {
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 _ = Element::from_reader(&mut reader).unwrap();
}
#[test]
fn does_not_unescape_cdata() {
let xml = "<test><![CDATA[&apos;&gt;blah<blah>]]></test>";
let mut reader = EventReader::from_str(xml);
let elem = Element::from_reader(&mut reader).unwrap();
assert_eq!(elem.text(), "&apos;&gt;blah<blah>");
}