Когда вы сначала создаете файл XML, используя, например, SimpleXMLElement php, вы можете сначала очистить его, чтобы предотвратить попадание HTML-кода в этот загруженный файл XML.Вот что я придумал:
$xml = new SimpleXMLElement("<root/>");
$xml->addChild("foo", "bar");
ob_end_clean();
header_remove();
header("Content-type: text/xml");
header('Content-Desposition: attachment; filename="foobar.xml"');
echo $xml->asXML();
exit();
Вот так выглядит загруженный файл "foobar.xml":
<?xml version="1.0"?>
<root><foo>bar</foo></root>
Testet with Chrome Версия 65.0.3325.181, Firefox 59.0.1 и Microsoft Edge 41.16299.371.0