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