Olá, Pessoal, Boa Tarde!
Estou desenvolvendo um Servlet que deve fazer uma consulta ao BD e retorna um XML para o Browser através de AJAX. Já fucei o GUJ todo mas não consegui resolver um problema. Chamo o Servlet por Ajax e peço o resultado em XML, mas não consigo receber e ler o XML no Javascript. No IE não retorna nada. No FF diz que tem um ObjectXMLDocument - mas não me deixa acessar e no Chrome aparece null em todos eles não consigo acessar a resposta como XML. Se eu receber por responseText eu vejo o XML retornado, mas se for no responseXML só consigo ver as msg citadas acima: nada, ObjectXMLDocument ou null.
O AJAX é o de sempre, respostaServicoSolicitado=xmlhttp.responseXML; sempre consigo receber um arquivo.xml qualquer com ele. o Problema acho que tá sendo gerar o XML em tempo de execução sem gravar em arquivo. Segue abaixo o código prá ver se vcs me dão umas dicas uma luz prá desenrolar isso. Nas duas formas abaixo não tô conseguindo receber o XML no browser. Tá enrolado o negócio… o que tá errado nesse código?
XML DESEJADO NO BROWSER:
<?xml version=‘1.0’ encoding=‘iso-8859-1’?>
<tamanho>
<totalRegistros id=‘totalRegistros’>200</totalRegistros>
</tamanho>
TENHO ESSA OPÇÃO:
response.setContentType(“text/xml”);
response.setHeader(“Cache-Control”, “no-cache”);
PrintWriter out = response.getWriter();
totalRegistros=getTotalRegistros(request, response); // pega o total de registros retornados na consulta - tá funcionando normal.
out.write("<?xml version=‘1.0’ encoding=‘iso-8859-1’?>\n");
out.write("<tamanho>\n"); // \ r \ n
out.write("<totalRegistros id=‘totalRegistros’>"+totalRegistros+"</totalRegistros>\n");
out.write("</tamanho>");
out.close();
OU ESTA OUTRA:
totalRegistros=getTotalRegistros(request, response); // pega o total de registros retornados na consulta - tá funcionando normal.
String totalReg = new Integer(totalRegistros).toString();
response.setContentType(“text/xml”);
DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = dbfac.newDocumentBuilder();
Document doc = docBuilder.newDocument();
Element tamanho = doc.createElement(“tamanho”);
doc.appendChild(tamanho);
Element totalRegistros = doc.createElement(“totalRegistros”);
<a href="//totalRegistros.setAttribute">//totalRegistros.setAttribute</a>(“id”, “totalRegistros”); //essa opção também funciona para set o id
Attr attr = doc.createAttribute(“id”);
attr.setValue(“totalRegistros”);
totalRegistros.setAttributeNode(attr);
tamanho.appendChild(totalRegistros);
Text text = doc.createTextNode(totalReg);
totalRegistros.appendChild(text);
TransformerFactory transfac = TransformerFactory.newInstance();
Transformer trans = transfac.newTransformer();
DOMSource source = new DOMSource(doc);
trans.setOutputProperty(OutputKeys.METHOD, “xml”);
trans.setOutputProperty(OutputKeys.ENCODING, “iso-8859-1”);
trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, “no”);
trans.setOutputProperty(OutputKeys.INDENT, “yes”);
ServletOutputStream outputStream = response.getOutputStream();
StreamResult stream = new StreamResult(outputStream);
trans.transform(source, stream);
outputStream.close();