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);