Skip to content

Commit 3a38ec6

Browse files
committed
feat(node-reader): now treats the empty tag case
1 parent 58cb682 commit 3a38ec6

File tree

3 files changed

+18
-3
lines changed

3 files changed

+18
-3
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "rxml"
3-
version = "2.1.0"
3+
version = "2.1.1"
44
edition = "2021"
55

66
[lib]

src/read.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,15 @@ fn read_node(root_tag: String, reader: &mut Reader<&[u8]>) -> Node {
4040
root.children.push(child);
4141
}
4242
},
43+
Ok(Event::Empty(e)) => {
44+
let node = Node {
45+
name: f_utf!(e.name().as_ref()),
46+
attrs: get_attrs(e.attributes()),
47+
children: Vec::new(),
48+
text: None,
49+
};
50+
root.children.push(node);
51+
}
4352
Ok(Event::Text(e)) => {
4453
root.text = Some(f_str!(e.unescape().unwrap()));
4554
}
@@ -75,7 +84,7 @@ pub fn read_string(xml_string: String, root_tag: String) -> Node {
7584
#[cfg(test)]
7685
mod tests {
7786
use crate::f_str;
78-
use crate::read::read_file;
87+
use crate::read::{read_file, read_string};
7988
use std::fs::{remove_file, File};
8089
use std::io::prelude::*;
8190
#[test]
@@ -95,4 +104,10 @@ mod tests {
95104
assert_eq!(node.children[0].text.as_ref().unwrap(), "test");
96105
assert_eq!(node.children[0].children.len(), 0);
97106
}
107+
#[test]
108+
fn test_read_self_closing_tag() {
109+
let xml_string = f_str!("<?xml version=\"1.0\" encoding=\"utf-8\"?><tag><wrapper><inner1>value</inner1><inner2 attr=\"attr\"/><inner3>value</inner3></wrapper></tag>");
110+
let node = read_string(xml_string, f_str!("tag"));
111+
assert_eq!(node.children[0].children.len(), 3);
112+
}
98113
}

0 commit comments

Comments
 (0)