properly close elements when the relation is empty v_0
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sat, 29 May 2021 17:00:01 +0200
branchv_0
changeset 32 1164d5bc5640
parent 31 bdb7ef1ad596
child 33 a1024068410c
properly close elements when the relation is empty
src/XmlHandler.h
--- a/src/XmlHandler.h	Sat Oct 24 00:08:19 2020 +0200
+++ b/src/XmlHandler.h	Sat May 29 17:00:01 2021 +0200
@@ -54,16 +54,17 @@
 	}
 
 	void startRelation(string_t name, std::vector<handlers::AttributeMetadata> attributes) override {
-		valueCount = 0;
-		columnCount = 0;
-
 		if (relationCount == 0) {
 			xmlWriter->writeStartElement(L"relpipe",{L"xmlns", XMLNS});
 		} else {
-			xmlWriter->writeEndElement();
+			if (valueCount) xmlWriter->writeEndElement();
 			xmlWriter->writeEndElement();
 		}
+
+		valueCount = 0;
+		columnCount = 0;
 		relationCount++;
+
 		xmlWriter->writeStartElement(L"relation");
 
 		xmlWriter->writeTextElement(L"name",{}, name);
@@ -91,6 +92,7 @@
 	void attribute(const string_t& value) override {
 		integer_t i = valueCount % columnCount;
 
+		// TODO: end element on last attribute instead of first + on end of pipe
 		if (i == 0 && valueCount) xmlWriter->writeEndElement();
 		if (i == 0) xmlWriter->writeStartElement(L"record");