Servlet retornando um xml

Galera uma dúvida simples. Tenho um servlet qualquer que processa algumas informações e o retorno tem que ser um xml.

public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws IOException, ServletException {

		(...Faz um processamento qualquer...)
		
		String nome = request.getParameter("nome");
		int orgao = Integer.parseInt(request.getParameter("orgao"));
		String matricula = request.getParameter("matricula");

		PrintWriter out = response.getWriter();
		response.setContentType("text/xml;charset=UTF-8");  
		response.setHeader("Cache-Control", "no-cache"); 

//Aqui começa a questão! Como eu monto o xml?

		out = response.getWriter();
		out.println("<HTML>");
		out.println("<HEAD>");
		out.println("<TITLE> Teste</TITLE>");
		out.println("</HEAD>");
		out.println("<BODY>");
		out.println("Nome:" + servidor.getNome_servidor());
		out.println("<BR>");
		out.println("Data: " + hoje);
		out.println("&lt;/BODY&gt;");
		out.println("&lt;/HTML&gt;");
	}

Dessa forma me retorna um xml dessa forma

- &lt;HTML&gt;
- &lt;HEAD&gt;
  &lt;TITLE&gt;Teste&lt;/TITLE&gt; 
  &lt;/HEAD&gt;
  &lt;BODY&gt;Nome:FULANO DA SILVA Data: Tue Dec 29 09:54:22 GMT-03:00 2009&lt;/BODY&gt; 
  &lt;/HTML&gt;

Como eu monto esse xml corretamente?

Aquilante eu não entendi sua duvida, com assim corretamente? O que você quer fazer? Por favor seja mais detalhista. :wink:

E aí aquilante !

A sintaxe de montagem do xml através do servlet está correta, a dúvida é, por que vc está usando um xml com tags de html? como vc pretende usar isso?

Abraço!

Emerson Rodrigo Costa

Pois galera a dúvida era na montagem mesmo, mas ja resolvi.

Ficou assim:

public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws IOException, ServletException {

		// Cria uma coleção
		Object[] listaServidor = null;

		// Cria um Objeto do tipo servidor
		Servidor servidor = null;

		// Cria
		FacadeService ws = new FacadeServiceLocator();
		Facade servico;

		String nome = request.getParameter(&quot;nome&quot;);

		try {
			servico = ws.getwsSSPDS();
			
			if (nome != null)
				listaServidor = servico.getServidor(nome);

		} catch (ServiceException e) {
			System.out.println(e.getClass().getName() + &quot;:&quot; + e.getMessage());
		} catch (RemoteException e) {
			System.out.println(e.getClass().getName() + &quot;:&quot; + e.getMessage());
		}
		
		StringBuffer xml = new StringBuffer(
				&quot;&lt;?xml version='1.0' encoding='ISO-8859-1'?&gt;&quot;);
		if (listaServidor.length &gt; 0) {
			xml.append(&quot;&lt;servidores&gt;&quot;);
			for (int i = 0; i &lt; listaServidor.length; i++) {
				servidor = (Servidor) listaServidor[i];
				xml.append(&quot;&lt;servidor&gt;");
				xml.append("&lt;nome&gt;");
				xml.append(servidor.getNome_servidor());
				xml.append("&lt;/nome&gt;");
				xml.append("&lt;matricula&gt;");
				xml.append(servidor.getMatricula());
				xml.append("&lt;/matricula&gt;");
			}
			xml.append("&lt;/servidores&gt;");
		}
		response.setContentType("text/xml");
		response.setHeader("Cache-Control", "no-cache");
		response.getWriter().write(xml.toString());
	}

Esse servlet vai em um Webservice traz os dados e retorna um xml.

Vlw!

Desculpe-me se eu estiver errado. Mas, não ficou faltando fechar a tag no fim da passagem do for?

   xml.append("<servidores>");  
             for (int i = 0; i < listaServidor.length; i++) {  
                 servidor = (Servidor) listaServidor[i];  
                 //abriu aqui
                 xml.append("<servidor>");  
                 xml.append("<nome>");  
                 xml.append(servidor.getNome_servidor());  
                 xml.append("</nome>");  
                 xml.append("<matricula>");  
                 xml.append(servidor.getMatricula());  
                 xml.append("</matricula>");  
                 //aqui não faltou um  xml.append("</servidor>");  ?
             }  
            xml.append("</servidores>");  

É que eu estou vendo mais sobre xml agora. Vendo seu código surgiu essa dúvida. Desculpe-me se estiver errado.