src/XmlHandler.h
branchv_0
changeset 15 26c945ea1733
parent 14 5094a7bf343d
child 19 3636510513d5
equal deleted inserted replaced
14:5094a7bf343d 15:26c945ea1733
    38 using namespace relpipe::reader;
    38 using namespace relpipe::reader;
    39 using namespace relpipe::xmlwriter;
    39 using namespace relpipe::xmlwriter;
    40 
    40 
    41 class XmlHandler : public handlers::RelationalReaderStringHadler {
    41 class XmlHandler : public handlers::RelationalReaderStringHadler {
    42 private:
    42 private:
       
    43 	const wstring XMLNS = L"tag:globalcode.info,2018:relpipe";
    43 	shared_ptr<XMLWriter> xmlWriter;
    44 	shared_ptr<XMLWriter> xmlWriter;
    44 	std::vector<TypeId> columnTypes;
    45 	std::vector<TypeId> columnTypes;
    45 	std::vector<string_t> columnTypeCodes;
    46 	std::vector<string_t> columnTypeCodes;
    46 	std::vector<string_t> columnNames;
    47 	std::vector<string_t> columnNames;
    47 	integer_t valueCount = 0;
    48 	integer_t valueCount = 0;
    56 	void startRelation(string_t name, std::vector<handlers::AttributeMetadata> attributes) override {
    57 	void startRelation(string_t name, std::vector<handlers::AttributeMetadata> attributes) override {
    57 		valueCount = 0;
    58 		valueCount = 0;
    58 		columnCount = 0;
    59 		columnCount = 0;
    59 
    60 
    60 		if (relationCount == 0) {
    61 		if (relationCount == 0) {
    61 			xmlWriter->writeStartElement(L"relpipe",{L"xmlns", L"tag:globalcode.info,2018:relpipe"});
    62 			xmlWriter->writeStartElement(L"relpipe",{L"xmlns", XMLNS});
    62 		} else {
    63 		} else {
    63 			xmlWriter->writeEndElement();
    64 			xmlWriter->writeEndElement();
    64 			xmlWriter->writeEndElement();
    65 			xmlWriter->writeEndElement();
    65 		}
    66 		}
    66 		relationCount++;
    67 		relationCount++;