Имеется XML-файл, лежащий в папке files.
По нажатию на кнопку он "собирается" и должен скачиваться.
Как можно это реализовать серез header (или иным способом), чтобы при сохранение не обнавлялась страница?
если вы знаете про функцию header, то это уже хорошо. но не поленитесь прочитать документацию к ней:
Если нужно предупредить пользователя о необходимости сохранить пересылаемые данные, такие как сгенерированный PDF-файл, можно воспользоваться заголовком » Content-Disposition, который подставляет рекомендуемое имя файла и заставляет браузер показать диалог загрузки.
Пример #1 Диалог загрузки
// Будем передавать PDF
header('Content-Type: application/pdf');
// Он будет называться downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');
// Исходный PDF-файл original.pdf
readfile('original.pdf');
в вашем случае mime-type следует указать text/xml или application/xml, ну и если файл собирается динамически, то вывести его через echo/print:
$xml = new SimpleXMLElement("<root></root>");
// формируем xml
// ....
// сохраняем в файл
$xml->asXML("/path/to/your/file.xml");
// отправляем заголовки для скачивания
header('Content-Type: application/xml');
header('Content-Disposition: attachment; filename="myfile.xml"');
// скидываем сам файл
print $xml->asXML();
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники