code: def etree_to_dict(element):
      
      i = dict(element.items())
      content = element.text.strip() if element.text else None
      i.update({'content': content}) if content else None
  
      if len(element.getchildren()):
          for child in element.iterchildren():
              tag = child.tag.split('}', 1)[-1]
              new = etree_to_dict(child)
              content = _make_content(i, tag, new)
              i.update({tag: content}) if content else None
  
              tag = 'content'
              new = child.tail.strip() if child.tail else None
              content = _make_content(i, tag, new)
              i.update({tag: content}) if content else None
      elif content and not set(i).difference(['content']):
          # element is leaf node and doesn't have attributes
          i = content
  
      return i
docs: Convert an eTree xml into dict imitating how Yahoo Pipes does it.
  
      todo: further investigate white space and multivalue handling