pp () is a Format printer for untyped XML.
It can be used in combination with "%a". For example, to get a string:
let s = Format.asprintf "%a" (pp ()) my_xml
A custom encoding function can be provided with the ~encode argument. Various implementations of encode are available in Xml_print.