Линия
file_put_contents('file.xml', 'w+' ob_get_contents());
должно генерировать ошибку разбора, потому что ob_get_contents следует за строкой без допустимого разделителя.
Кстати, вам не нужно указывать 'w +' для file_put_contents (и даже если вы хотите, вы не можете), это неявно. Таким образом, вы должны заменить строку на:
file_put_contents('file.xml', ob_get_contents());
Вы можете взглянуть на документацию file_ put_contents .