Как можно защитить XML файл от открытия любым человеком?
Запретить обращение напрямую в htaccess а только через скрипт,  а дальше на что фантазии хватит.
Не класть файл в открытый доступ.
Отдавать скриптом, который принимает в параметре имя файла, проверяет авторизацию и отдает файл с соответствующими заголовками
"как отдать сгенерированный РНР скриптом ХМЛ файл" в гугле можно найти чуть более чем дофига примеров