dhp.xml package

Module contents

routines generally helpful for dealing with icky xml

exception dhp.xml.MissingRequiredException

Bases: exceptions.Exception

A required data element is not present

exception dhp.xml.NoRootExeception

Bases: exceptions.Exception

raised when dictionary to build xml document from does not have a single ‘root’ node elment. i.e. {'root':{ ... }}

dhp.xml.dict_to_xml(dictionary, attrs=None)

return a string representation of an xml document of the dictionary. ( with optional attributes for the root node.)

>>> the_dict = {'root': {'foo': '1'}}
>>> dict_to_xml(the_dict)
<?xml version="1.0" ?><root xml:lang="en-US"><foo>1</foo></root>

Since the function returns a full xml document, the dictionary has to closely approximate the structure of the xml document. So the top level of the dictionary must be a string key with a dictionary for a value.

Also, ALL leaf node element values must be strings.

  • dictionary (dict) – an approximation of the xml document desired as a Python dictionary.
  • args (dict) – a dicitionary containing attributes to assign to the root level node.

NoRootExeception – When there top level dictionary has more than 1 key/value or if the value of the top level key is not a dictionary.


a string representing an xml document based on the inputs.

Return type:



serialize an object’s non-private/non-hidden data attributes

dhp.xml.ppxml(xmls, indent=u' ')

pretty print xml, stripping an existing formatting

>>> buf = '<root><foo>1</foo></root>'
>>> ppxml(buf)
<?xml version="1.0" ?>
  • xmls (str) – an xml string, either a fragment or document
  • indent (str) – a string containing the white space to use for indentation.

A transform of that string with new lines and standardized

indentation. Default is 2 spaces indent='  '

Return type:



convert xml string to a dictionary, not always pretty, but reliable