The catch is that what you're asking to do involves changing the logical structure of the XML document by adding significant spaces, and XML::LibXML sees toString as a serialization function.
and it did not make a difference
I just tried it. It makes a huge difference. Not for the good, though. While it pretties up the part that isn't prettied up, it pretties up the part that's already been prettied up too.
use strict;
use warnings;
use XML::LibXML;
print XML::LibXML->new->parse_fh(*DATA)->toString(2);
__DATA__
<?xml version="1.0" encoding="UTF-8"?>
<config>
<sites>
<site>
<sitename><![CDATA[www.example.com]]></sitename>
<active><![CDATA[1]]></active>
<rooturl><![CDATA[http://www.example.com.com/]]></rooturl>
<name><![CDATA[Example]]></name>
</site>
<site><sitename>Test entry</sitename><name></name><rooturl><![CDATA[
+http://www.test.com.com/]]></rooturl><reportname><![CDATA[test report
+ name]]></reportname></site></sites>
</config>
?xml version="1.0" encoding="UTF-8"?>
<config>
<sites>
<site>
<sitename>
<![CDATA[www.example.com]]>
</sitename>
<active>
<![CDATA[1]]>
</active>
<rooturl>
<![CDATA[http://www.example.com.com/]]>
</rooturl>
<name>
<![CDATA[Example]]>
</name>
</site>
<site>
<sitename>
Test entry
</sitename>
<name/>
<rooturl>
<![CDATA[http://www.test.com.com/]]>
</rooturl>
<reportname>
<![CDATA[test report name]]>
</reportname>
</site>
</sites>
</config>