docs: def dicttoxml(obj, root=True, custom_root='root', ids=False, attr_type=True,
      item_func=default_item_func, cdata=False):
      """Converts a python object into XML.
      Arguments:
      - root specifies whether the output is wrapped in an XML root element
        Default is True
      - custom_root allows you to specify a custom root element.
        Default is 'root'
      - ids specifies whether elements get unique ids.
        Default is False
      - attr_type specifies whether elements get a data type attribute.
        Default is True
      - item_func specifies what function should generate the element name for
        items in a list. 
        Default is 'item'
      - cdata specifies whether string values should be wrapped in CDATA sections.
        Default is False
      """
      LOG.info('Inside dicttoxml(): type(obj) is: "%s", obj="%s"' % (type(obj).__name__, unicode_me(obj)))
      output = []
      addline = output.append
      if root == True:
          addline('<?xml version="1.0" encoding="UTF-8" ?>')
          addline('<%s>%s</%s>' % (
          custom_root, 
          convert(obj, ids, attr_type, item_func, cdata, parent=custom_root), 
          custom_root,
          )
      )
      else:
          addline(convert(obj, ids, attr_type, item_func, cdata, parent=''))
      return ''.join(output).encode('utf-8')