$dom->loadXML($xml);
не возвращает объект при вызове в контексте объекта (то есть $ obj -> loadxml ()), но изменяет внутреннее состояние самого объекта.
, например
$doc = new DOMDocument();
$doc->loadXML($xml) or die('loadxml failed');
$output= $doc->saveXML();
echo phpversion(), "\n";
echo '|savexml|=', strlen($output), "\n";
echo '|children| = ', $doc->documentElement->childNodes->length, "\n";
отпечатков (на моей машине)
5.3.1
|savexml|=5840
|children| = 33