docs: def decode(data):
      """
      Handles decoding of the XML `data`.
  
      Args:
          data (str): Data which will be decoded.
  
      Returns:
          dict: Dictionary with decoded data.
      """
      dom = None
      try:
          dom = dhtmlparser.parseString(data)
      except Exception, e:
          raise MetaParsingException("Can't parse your XML data: %s" % e.message)
  
      root = dom.find("root")
  
      # check whether there is <root>s
      if not root:
          raise MetaParsingException("All elements have to be inside <root>.")
  
      # and make sure, that there is not too many <root>s
      if len(root) > 1:
          raise MetaParsingException("Too many <root> elements in your XML!")
  
      items = root[0].find("item")
  
      # check for items
      if not items:
          raise MetaParsingException("There are no <items> in your XML <root>!")
  
      decoded = []
      for item in items:
          if "key" not in item.params:
              raise MetaParsingException(
                  "There is no 'key' parameter in %s." % str(item)
              )
  
          decoded.append([
              item.params["key"],
              item.getContent().strip()
          ])
  
      decoded = validator.check_structure(decoded)
  
      return decoded