Resposta String XML com JSP e SERVLET

Bom dia prezados,
Meu problema é o seguinte:
Segue a página para melhor visualização:

Preciso abrir uma janela popup com um XML quando clicar no botão Ver.
Para isso crio um popup assim:

function newPopup(){
		newpopupWindow = window.open ('', "_blank", "scrollbars=1,resizable=1,height=600,width=600");
		newpopupWindow.document.write();
}

Em newpopupWindow.document.write(); deve receber meu XML de retorno, esse XML ira vir de uma consulta de um webService, da mesma forma que o botão download, porem o botão download funciona, mas a chamada é diferente, preciso trazer por JSON para não precisar recarregar a página, então estou tentando assim:

    	function ver(XMLtipo, idUnico){	
		  $.ajax({
	            url : "DashboardServlet/verXML.do", 
				//url : "DashboardServlet?operacao=verXML",
	            type : "POST",
	            contentType : "application/json; charset=utf-8", //define o myme type da requisição
	            dataType : "json", //define o tipo de dado retornado pela requisição
				data : {
					XMLEnvio : XMLtipo,
					idUnicoEnvio : idUnico
				}, 
				success: function(ResponseXML){
					alert(ResponseXML.retorno)
				},
				error: function(e){
					alert(e.retorno);
				}                     
	        });
		}

Porem não consigo devolver o a String com XML de jeito nenhum, sempre cai no error, tenho certeza que chama a função pois devolve cod 200 Ok:

Os outros metodos eu chamo diferente, passo assim:

function download(XML, idUnico, CorrerID){		 
	    	var location='DashboardServlet?operacao=xmlDownload&XML='+XML+'&idUnico='+idUnico+'&CorrerID='+CorrerID;
			redirect(location);
		}

function redirect(param){
  			window.location.href = param;
		}

Na servlet eu comparo qual é a operação e mando para o metodo correto, assim:

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		doPost(req, resp);
	}
	
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// Verificar a operação a ser realizada
		String oper = req.getParameter("operacao");
		oper = oper != null ? oper : "loadPagina";
		switch (oper) {
			case "itensQueueFila": itensQueue(req, resp); break;
			case "zeraSessao" : zeraSessao(req, resp); break;
			case "consultaFilas": consultaFilas(req, resp); break;
			case "xmlDownload" : xmlDownload(req, resp); break;	
			//case "verXML" : verXML(req, resp); break;	
			default: loadPagina(req, resp); break;
		}
	}

No caso do download a servlet está assim:

private void xmlDownload(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		ConsultaXMLQueueResponse XML = null;
		String nomeColuna = req.getParameter("XML");
		String idUnicoXML = req.getParameter("idUnico");
		String CorrerIDxml = req.getParameter("CorrerID");
		try{
			XML = LoadPagina.getXML(nomeColuna, Integer.parseInt(idUnicoXML));
			File file = new File(nomeColuna+"_"+CorrerIDxml+".xml");
			try (PrintStream ps = new PrintStream(file)) {
			   ps.println(XML.getXML());
			}
			resp.setContentType("application/octet-stream");
			resp.setContentLength((int) file.length());
			resp.setHeader( "Content-Disposition",
			         String.format("attachment; filename=\"%s\"", file.getName()));

			OutputStream out = resp.getOutputStream();
			try (FileInputStream in = new FileInputStream(file)) {
			    byte[] buffer = new byte[4096];
			    int length;
			    while ((length = in.read(buffer)) > 0) {
			        out.write(buffer, 0, length);
			    }
			}
			out.flush();
		}catch(Exception e){
			e.getStackTrace();			
		} 
	}

Ela me devolve o download sem recarregar a página, não compreendi muito bem o por que, mas os outros metodos recarregam a página, por exemplo outro metodo:

private void loadPagina(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {	
		try {
			req.getSession().removeAttribute("QueuePagina");
			req.setAttribute("queues", LoadPagina.getFilasLoadPagina());
			//enviaEmail(req, resp);
		} catch (Exception e) {
			//req.setAttribute("queues", Collections.emptyList());
			e.printStackTrace();
		}
		RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/jsp/home.jsp");
		dispatcher.forward(req, resp);
	}

Mas para esses não tem problema recarregar a página, mas para o download e botão ver teria.
Então tento mandar um Ajax para o botão ver, para não recarregar a página e poder abrir quantos popup quiser sem precisar dar reload.
Como estão mandando Ajax então estou chamando direto o metodo sem precisar passar pela comparação da operação.

Minha ultima tentativa foi assim:

	private void verXML(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		ConsultaXMLQueueResponse XML = null;
		String nomeColuna = req.getParameter("XMLEnvio");
		String idUnicoXML = req.getParameter("idUnicoEnvio");
		
		try {
			XML = LoadPagina.getXML(nomeColuna, Integer.parseInt(idUnicoXML));

			resp.setCharacterEncoding("UTF-8");
			resp.setContentType("application/json");
			// Get the printwriter object from response to write the required json object to the output stream      
			PrintWriter out = resp.getWriter();
			
			//out.println(XML.getXML());	
			JSONObject json = new JSONObject();
			json.put("retorno", XML.getXML());
			out.print(json);
			out.flush();
						
		} catch (NumberFormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  

	}

Mas nada funciona, estou a quase dois dias e nada. alguém pode me ajudar??

Pena que ninguém me ajudou mas resolvi o problema.

Ajax:

function ver(XMLtipo, idUnico){	
		  $.ajax({
	            url : "ViewerXMLservlet", 
				//url : "DashboardServlet?operacao=verXML",
	            type : "GET",
// 	            contentType : "application/json; charset=utf-8", //define o myme type da requisição
// 	            dataType : "json", //define o tipo de dado retornado pela requisição
				contentType: "text/html; charset=utf-8",                
           		dataType: "text",
				data : {
					XMLEnvio : XMLtipo,
					idUnicoEnvio : idUnico
				}, 
				success: function(ResponseXML){
					newpopupWindow = window.open ('data:text/xml,' + encodeURIComponent(ResponseXML), "_blank", "scrollbars=1,resizable=1,height=600,width=600");			        
					alert(ResponseXML);									
				},
				error: function(e){
					alert(e);
					alert('Error');
					return false;
				}                     
	        });
			return true;
		} 

criei outra servlet com apenas get:

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		ConsultaXMLQueueResponse XML = null;
		String nomeColuna = req.getParameter("XMLEnvio");
		String idUnicoXML = req.getParameter("idUnicoEnvio");
		
		try {
			XML = LoadPagina.getXML(nomeColuna, Integer.parseInt(idUnicoXML));
			

			resp.setContentType("text/html;charset=UTF-8");	
			PrintWriter out = resp.getWriter();		
			out.write(XML.getXML().toString());
			out.flush();
		} catch (NumberFormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
	}

Tudo funcionando.
Desta forma abro uma janela popup mostrando o XML com suas tags.