docs: def _parse_output(self, xml_response):
          """Parse the response XML from iLO.
  
          This function parses the output received from ILO.
          As the output contains multiple XMLs, it extracts
          one xml at a time and loops over till all the xmls
          in the response are exhausted.
  
          It returns the data to APIs either in dictionary
          format or as the string.
          It creates the dictionary only if the Ilo response
          contains the data under the requested RIBCL command.
          If the Ilo response contains only the string,
          then the string is returned back.
          """
          count = 0
          xml_dict = {}
          resp_message = None
          xml_start_pos = []
          for m in re.finditer(r"\<\?xml", xml_response):
              xml_start_pos.append(m.start())
          while count < len(xml_start_pos):
              if (count == len(xml_start_pos) - 1):
                  result = xml_response[xml_start_pos[count]:]
              else:
                  start = xml_start_pos[count]
                  end = xml_start_pos[count + 1]
                  result = xml_response[start:end]
              result = result.strip()
              message = etree.fromstring(result)
              resp = self._validate_message(message)
              if hasattr(resp, 'tag'):
                  xml_dict = self._elementtree_to_dict(resp)
              elif resp is not None:
                  resp_message = resp
              count = count + 1
  
          if xml_dict:
              return xml_dict
          elif resp_message is not None:
              return resp_message