diff --git a/alib2data/src/sax/SaxParseInterface.cpp b/alib2data/src/sax/SaxParseInterface.cpp index 6c0a157cdbabbf957882d4fa433295937983daf1..ff0cefeb297b6f0925fab5ba9208d6bcdac863bd 100644 --- a/alib2data/src/sax/SaxParseInterface.cpp +++ b/alib2data/src/sax/SaxParseInterface.cpp @@ -59,10 +59,12 @@ int SaxParseInterface::xmlSAXUserParse(xmlTextReaderPtr reader, std::deque<Token while (ret == 1) { xmlChar* name = xmlTextReaderName(reader); xmlChar* value; + bool empty; switch(xmlTextReaderNodeType(reader)) { case 1: // START_ELEMENT out.emplace_back((const char*) name, Token::TokenType::START_ELEMENT); + empty = xmlTextReaderIsEmptyElement(reader); while(xmlTextReaderMoveToNextAttribute(reader)) { xmlChar* attrName = xmlTextReaderName(reader); xmlChar* attrValue = xmlTextReaderValue(reader); @@ -74,7 +76,7 @@ int SaxParseInterface::xmlSAXUserParse(xmlTextReaderPtr reader, std::deque<Token xmlFree(attrName); xmlFree(attrValue); } - if(xmlTextReaderIsEmptyElement(reader)) out.emplace_back((const char*) name, Token::TokenType::END_ELEMENT); + if(empty) out.emplace_back((const char*) name, Token::TokenType::END_ELEMENT); break; case 3: //CHARACTER value = xmlTextReaderValue(reader);