Bläddra i källkod

Fixed XMLReader class

- fixed level calculation of xml nodes
pcmattulat 4 år sedan
förälder
incheckning
f3c3548f9d
1 ändrade filer med 6 tillägg och 5 borttagningar
  1. 6 5
      source/io/xml/XMLReader.cpp

+ 6 - 5
source/io/xml/XMLReader.cpp

@@ -19,6 +19,7 @@ document(_document)
 {
   XMLReader::_checkDocumentExistence(_document);
   XMLReader::_checkFileExistence(this->xmlFile);
+  this->_reset();
 }
 
 ls_std::byte_field ls_std::XMLReader::read()
@@ -240,13 +241,13 @@ size_t ls_std::XMLReader::_parseOpeningTag(const ls_std::byte_field &_data, std:
   if(isValidTagString) {
     std::shared_ptr<ls_std::XMLNode> node = ls_std::XMLReader::_createNode(ls_std::XMLReader::_parseAttributes(tagString), ls_std::XMLReader::_parseTagName(tagString));
 
-    if(!tagString.endsWith("/>")) {
-      this->currentLevel += 1;
-    }
-
     singleParseData.level = this->currentLevel;
     singleParseData.node = node;
     this->parseData.push_back(singleParseData);
+
+    if(!tagString.endsWith("/>")) {
+      this->currentLevel += 1;
+    }
   }
 
   return !isValidTagString ? _index : _index + tagString.toString().size();
@@ -295,7 +296,7 @@ void ls_std::XMLReader::_read(const ls_std::byte_field &_data)
 
 void ls_std::XMLReader::_reset()
 {
-  this->currentLevel = 0;
+  this->currentLevel = 1;
   this->mode = XML_PARSE_MODE_ANALYZE;
   this->parseData.clear();
 }