Gerando XML no Java

3 respostas
E

Estou usando AJAX junto com Java mas estou tendo problemas pra gerar um XML no java.

Veja código abaixo:

StringBuffer xml = new StringBuffer("<clientes>");
while (rs.next()) {
   xml.append("<cliente>");
   xml.append("<nome>");
   xml.append("Garcia"); //rs.fldNome)
   xml.append("</nome>");
   xml.append("</cliente>");
}
xml.append("</clientes>");		
response.setContentType("text/xml");
response.setHeader("Cache-Control","no-cache");
//out.println(xml.toString());
response.getWriter().write(xml.toString());

Não reparem o While pq dpois vou buscar os dados em um DB.
Mas rodando esse .jsp não encontro problemas nenhum mas estou tendo o problema maior na saída, no browse mais especificadamente.

Vejam:

A página XML não pode ser exibida 
Não é possível exibir a entrada XML usando a folha de estilos XSL. Corrija o erro e clique no botão Atualizar ou tente novamente mais tarde. 


--------------------------------------------------------------------------------

Em um documento XML  são permitidos elementos de nível superior. Erro ao processar o recurso 'http://localhost:8080/siste...

<body>
-^

Como ele ta gerando tag de HTML se eu coloquei:

response.setContentType("text/xml");

Não era pra sair em XML somente?

O problema é de lógica eu axo ou ta faltando algum comando! Se puderem ajudar, grato desde já!

[]´s,

Garcia.

3 Respostas

E

hum… melhor pratica é utilizar o conceito de DAO e VO

no teu DAO vc carrega um VO que representa a informação recuperada do banco, caso seja uma lista insira em uma coleção do tipo List e depois utilize o XStream para realizar a conversão Objeto > XML sem trauma para isso :wink:

E

Então!

Li sobre o XStream! Realmente eu não vou precisar esquentar a cabeça!
Mas como estou com o projeto atrasado, essas linhas resolveram o meu problema!
Agora estou tendo problemas para exibir os dados do banco de dados!
Qdo tem acentuação não aparece! Qdo não tem acentuação aparece todos!!!

Estou usando este código:

StringBuffer xml = new StringBuffer("<?xml version='1.0' encoding='utf-8'?>");
	if (xStatus == 15 ) { 
		xml.append("<clientes>");
    	while (rs.next()) {

			xml.append("<cliente>");
			
			xml.append("<nome>");
			xml.append(rs.getString("fldNome"));
			xml.append("</nome>");
			
			xml.append("<cpf>");
			xml.append(rs.getString("fldCPF"));
			xml.append("</cpf>");
			
			xml.append("<nascimento>");
			xml.append(rs.getString("fldDataNasc"));
			xml.append("</nascimento>");
			
			xml.append("<ddd>");
			xml.append(rs.getString("fldDDD"));
			xml.append("</ddd>");
			
			xml.append("<telefone>");
			xml.append(rs.getString("fldTelefone"));
			xml.append("</telefone>");
			
			
			xml.append("</cliente>");
		}
		xml.append("</clientes>");		
	}
	if (xStatus == 10) {
   		xml.append("<status>");
		if (rs.next()) {
			xml.append("1");
		} else {
			xml.append("0");
		}
		xml.append("</status>");
	}
	if (xStatus > 0) {
		response.setContentType("text/xml");
  		response.setHeader("Cache-Control","no-cache");
		//out.println(xml.toString());
		response.getWriter().write(xml.toString());
	}

Eu coloquei na primeira linha o UTF-8 mas msm assim da erro!
Então eu axo q falta algo no response.setcontentType!!

Se puder me ajudar!!

[]´s,

Garcia.

E

Bom!
A solução me passada em outro forum foi:

StringBuffer xml = new StringBuffer("&lt?xml version='1.0' encoding='ISO-8859-1'?&gt");

Value!!! Deu certo!

[]´s,

Garcia.

Criado 14 de março de 2007
Ultima resposta 22 de mar. de 2007
Respostas 3
Participantes 2