encode XML element names properly v_0
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sat, 05 Jun 2021 21:12:46 +0200
branchv_0
changeset 35 5bfd1d389d5f
parent 34 0b0d214c3cb2
child 36 c97810ccfdef
encode XML element names properly
src/XMLDocumentConstructor.h
--- a/src/XMLDocumentConstructor.h	Sat Jun 05 21:06:34 2021 +0200
+++ b/src/XMLDocumentConstructor.h	Sat Jun 05 21:12:46 2021 +0200
@@ -67,10 +67,6 @@
 		return value && length > 0 ? std::string((const char*) value, length) : "";
 	}
 
-	const Glib::ustring c2xname(cbor_data value, uint64_t length) {
-		return nameCodec.encode(c2x(value, length));
-	}
-
 	xmlpp::Element* parentOrSelf(xmlpp::Element* current) {
 		return current->get_parent() == nullptr ? current : current->get_parent();
 	}
@@ -87,11 +83,11 @@
 	void appendScalarValue(Glib::ustring value, Glib::ustring cborType, bool isNull = false) {
 		// TODO: null
 		if (mode.back() == Mode::ARRAY) {
-			xmlpp::Element* element = current->add_child(itemName);
+			xmlpp::Element* element = current->add_child(nameCodec.encode(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 = current->add_child(nameCodec.encode(value));
 			current->set_attribute("key-type", cborType);
 			mode.push_back(Mode::MAP_VALUE);
 		} else if (mode.back() == Mode::MAP_VALUE) {
@@ -126,7 +122,7 @@
 	void mapStart(ssize_t size) {
 		if (mode.back() == Mode::ROOT) {
 		} else if (mode.back() == Mode::ARRAY) {
-			current = current->add_child(itemName);
+			current = current->add_child(nameCodec.encode(itemName));
 			current->set_attribute("value-type", "map");
 		} else if (mode.back() == Mode::MAP_VALUE) {
 			mode.pop_back();