ZF2 way предполагает использование кода фреймворка для работы с заголовками, а потому:
$type = 'text/xml';
$data = '...';
$fileName = 'data.xml';
$response = $this->getResponse();
$response->setContent($data);
$headers = new \Zend\Http\Headers();
$headers->addHeaderLine('Content-Type', $type)
->addHeaderLine('Content-Disposition', 'attachment; filename="' . $fileName . '"')
->addHeaderLine('Content-Length', strlen($data));
$response->setHeaders($headers);
return $response;
Если читаете из файла, то первый блок с $response надо заменить на:
$response = new \Zend\Http\Response\Stream();
$response->setStream(fopen($fileName, 'r'));
$response->setStatusCode(200);
или перевести на работу с "X-Accel-Redirect"