Refactor PluginsXmlParser::NextChildElement() 35/205635/2
authorSangyoon Jang <jeremy.jang@samsung.com>
Wed, 8 May 2019 06:03:54 +0000 (15:03 +0900)
committerSangyoon Jang <jeremy.jang@samsung.com>
Thu, 9 May 2019 11:02:27 +0000 (11:02 +0000)
Call xmlTextReaderRead() until reaching child element.

Change-Id: I523187efb4402b81e703b6ff065ef50165b486e2
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
src/common/plugins/plugin_xml_parser.cc

index d126f88..f8882ed 100644 (file)
@@ -55,25 +55,15 @@ const std::vector<std::string>& PluginsXmlParser::tags_list() { return tags_; }
 xmlDocPtr PluginsXmlParser::doc_ptr() { return doc_ptr_; }
 
 int PluginsXmlParser::NextChildElement(xmlTextReaderPtr reader, int depth) {
-  int ret = xmlTextReaderRead(reader);
-  int cur = xmlTextReaderDepth(reader);
-
-  while (ret == 1) {
-    switch (xmlTextReaderNodeType(reader)) {
-      case XML_READER_TYPE_ELEMENT:
-        if (cur >= depth + 1) return 1;
-        break;
-      case XML_READER_TYPE_COMMENT:
-        break;
-      default:
-
-        if (cur <= depth) return 0;
-        break;
-    }
+  int ret;
+  int cur;
+  int type;
 
+  do {
     ret = xmlTextReaderRead(reader);
     cur = xmlTextReaderDepth(reader);
-  }
+    type = xmlTextReaderNodeType(reader);
+  } while (ret == 1 && (cur <= depth || type != XML_READER_TYPE_ELEMENT));
 
   return ret;
 }