diff -r 82b7f6e41a65 -r 57cb51fb5212 src/XMLDocumentConstructor.h --- a/src/XMLDocumentConstructor.h Sat Jun 05 20:03:13 2021 +0200 +++ b/src/XMLDocumentConstructor.h Sat Jun 05 21:01:50 2021 +0200 @@ -87,12 +87,16 @@ void appendScalarValue(Glib::ustring value, Glib::ustring cborType, bool isNull = false) { // TODO: null if (mode.back() == Mode::ARRAY) { - current->add_child(itemName)->add_child_text(value); + xmlpp::Element* element = current->add_child(itemName); + element->add_child_text(value); + element->set_attribute("value-type", cborType); } else if (mode.back() == Mode::MAP_KEY) { current = current->add_child(value); + current->set_attribute("key-type", cborType); mode.push_back(Mode::MAP_VALUE); } else if (mode.back() == Mode::MAP_VALUE) { current->add_child_text(value); + current->set_attribute("value-type", cborType); current = parentOrSelf(current); mode.pop_back(); } else if (mode.back() == Mode::ROOT) { @@ -123,6 +127,7 @@ if (mode.back() == Mode::ROOT) { } else if (mode.back() == Mode::ARRAY) { current = current->add_child(itemName); + current->set_attribute("value-type", "map"); } else if (mode.back() == Mode::MAP_VALUE) { mode.pop_back(); // TODO: remainingItems @@ -136,7 +141,6 @@ } void containerEnd() { - current->add_child_comment(Glib::ustring::compose("end of a container: mode = %1", (int) mode.back())); // FIXME: remove remainingItems.pop_back(); if (mode.back() == Mode::MAP_KEY || mode.back() == Mode::MAP_VALUE) current = parentOrSelf(current); mode.pop_back(); // TODO: assert map/array