code: def prepare_xml_read(data, objectify=False):
      
      mod = _objectify if objectify else etree
      if hasattr(data, 'readlines'):
          data = mod.parse(data).getroot()
      elif isinstance(data, list):
          data = mod.fromstring(''.join(data))
      elif isinstance(data, basestring):
          data = mod.parse(open(data)).getroot()
      else:
          raise TypeError('Unable to handle data of type %r' % type(data))
      return data
docs: Prepare various input types for XML parsing.
  
      Args:
          data (iter): Data to read
          objectify (bool): Parse using lxml's objectify data binding
  
      Returns:
          etree.ElementTree: Tree suitable for parsing
  
      Raises:
          TypeError: Invalid value for data