code: def parse(self, uri=None, fh=None, str_data=None, **kwargs):
          
          if (uri is not None):
              try:
                  fh = URLopener().open(uri)
              except IOError as e:
                  raise Exception(
                      "Failed to load sitemap/sitemapindex from %s (%s)" %
                      (uri, str(e)))
          elif (str_data is not None):
              fh = io.StringIO(str_data)
          elif ('str' in kwargs):
              # Legacy support for str argument, see
              # https://github.com/resync/resync/pull/21
              # One test for this in tests/test_list_base.py
              self.logger.warn(
                  "Legacy parse(str=...), use parse(str_data=...) instead")
              fh = io.StringIO(kwargs['str'])
          if (fh is None):
              raise Exception("Nothing to parse")
          s = self.new_sitemap()
          s.parse_xml(
              fh=fh,
              resources=self,
              capability=self.capability_name,
              sitemapindex=False)
          self.parsed_index = s.parsed_index
docs: Parse a single XML document for this list.
  
          Accepts either a uri (uri or default if parameter not specified),
          or a filehandle (fh) or a string (str_data). Note that this method
          does not handle the case of a sitemapindex+sitemaps.
  
          LEGACY SUPPORT - the parameter str may be used in place of str_data
          but is deprecated and will be removed in a later version.