From 099d9aaca6509496ccb28c522659b990f42037f0 Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Tue, 11 Aug 2020 21:00:56 +0200 Subject: [PATCH] library(sgml): Correctly parse XML leaf nodes that are not text nodes. Example: ?- load_xml("", Node, []). Node = [element(schemaRef,[type="simple"],[])]. This is necessary for example to parse XBRL files. See #665. --- src/machine/system_calls.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index 2d890877..d2779d1a 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -5877,7 +5877,10 @@ impl MachineState { indices: &mut IndexStore, node: roxmltree::Node, ) -> Addr { - if node.has_children() { + if node.is_text() { + let string = String::from(node.text().unwrap()); + self.heap.put_complete_string(&string) + } else { let mut avec = Vec::new(); for attr in node.attributes() { let chars = clause_name!(String::from(attr.name()), indices.atom_tbl); @@ -5914,9 +5917,6 @@ impl MachineState { self.heap.push(HeapCellValue::Addr(children)); result - } else { - let string = String::from(node.text().unwrap()); - self.heap.put_complete_string(&string) } } -- 2.54.0