Finalmente he encontrado la solución, o al menos una posible solución.
Os comento por si os pasa alguna vez:
A la hora de pasar el xml al archivo utilice el método utf8_encode, de forma que se codifica justo antes de generar el fichero.
Código PHP:
//creamos el fichero shops.xml
if($DescriptorFichero = fopen("shops.xml","w")) {
fputs($DescriptorFichero,utf8_encode($xml));
fclose($DescriptorFichero);
}