Gerando XML para download

Boa tarde, estou fazendo um botão para download que disponibilizará um arquivo.xml. Até ai tudo bem, porém o arquivo e carregado mas não abre a opção de salvar e nem muito menos o download automático é feito, para facilitar o sistema não me retorna nada, deu debug e não deu erro algum, as variáveis foram carregadas conforme planejado. Podem me ajudar?

public File StringToFileXML() throws IOException {
		if (xmlNota != null) {
			File arquivo;

			arquivo = new File("Arquivo.xml");
			FileWriter arquivoWr;
			arquivoWr = new FileWriter(arquivo);
			arquivoWr.write(xmlNota);
			arquivoWr.close();
			return arquivo;
		} else {
			return null;
		}
	}

public void baixarXML() throws IOException {
		File arquivo = StringToFileXML();
		
		String nomeArquivo =arquivo.getName();
		
//		FacesContext facesContext = FacesContext.getCurrentInstance(); //Testar
		FacesContext facesContext = super.context();
		
		ExternalContext externalContext = facesContext.getExternalContext();
		
		externalContext.responseReset();
		externalContext.setResponseContentType("application/xml");
		externalContext.setResponseHeader("Content-Disposition", "attachment; filename=\"" + nomeArquivo + "\"");
		
		OutputStream out = externalContext.getResponseOutputStream();
		byte[] data = Files.readAllBytes(arquivo.toPath());

		try (InputStream is = new ByteArrayInputStream(data)) {
            int read = -1;
            
            byte[] buffer = new byte[1024];
            
            while ((read = is.read(buffer)) != -1) {
                out.write(buffer, 0, read);
            }
            out.flush();
            out.close();
		}
		facesContext.renderResponse();
		facesContext.responseComplete();
		
	}

Porque nao utiliza Primefaces? Bem mais facil

    		<!-- immediate faz com que a exportação para xls seja feita antes da fase de validação da JSF -->
    		<p:commandButton icon="ui-icon-arrowthick-1-s" title="Exportar para XLS"
    				ajax="false" immediate="true">
    			<p:dataExporter type="xls" target="empresas-table" fileName="empresas" />
    		</p:commandButton>

Pera, desculpe parecer burro mas não entendi. Como o <p:dataExporter vai saber exatamente qual arquivo quero que ele faça download? No campo fileName vai saber qual nome do arquivo mas como mando esse nome e o local desse arquivo? Não sei se ficou claro é que as dúvidas surgiram aqui…

Pra chamar, estou usando assim:

<p:commandButton value="Baixar XML" 
					icon="ui-icon-folder-collapsed"
					styleClass="buttonVisualizarNFC" update="@form"
					action="#{nFCeController400.baixarXML}">
</p:commandButton>