Como faço para pegar um XML em uma página JSP

Estou com um problema que é o seguinte:

Eu preciso pegar um XML que estou passando para uma página JSP de ação pelo método POST. Só que eu não consigo pegar este XML na minha página. Alguem sabe como posso fazer isso?

Vou passar o código que estou fazendo para passar o XML:

function Salvar()
{
  var index = 0;
  softwareselecionados = softwareselecionados.substring(0,softwareselecionados.length - 1);
  var listasoftwares = softwareselecionados.split(";");
  var SoftwareVersao;
  var Registro;
  var ObjDom;
  var xsltProcessor = new XSLTProcessor();
  var myDOM;
  var xmlDoc;
  var myXMLHTTPRequest = new XMLHttpRequest();
  var Valido = validar_campos();
  var DomXML;
		
 if (!Valido)
 {
   return false;
 } 
 DomXML = document.getElementById("SalvarXML");
 Registro = document.createElement("REGISTRO"); 
 Registro.setAttribute("IDUSUARIO",ID_Usuario); 
 Registro.setAttribute("NRRAMAL",document.Formulario.NRRamal.value);
 Registro.setAttribute("DTEMPRESTIMO", document.Formulario.DTEmprestimo.value);
 DomXML.appendChild(Registro);
 for(index = 0; index < listasoftwares.length; index++)
 {
   SoftwareVersao = listasoftwares[index].split(",");
   Softwares = document.createElement("SOFTWARE");
   Softwares.setAttribute("IDLINHA",index+1);
   Softwares.setAttribute("CDSOFTWARE",SoftwareVersao[0]);
   Softwares.setAttribute("CDVERSAO",SoftwareVersao[1]);
   Registro.appendChild(Softwares);
 }
myXMLHTTPRequest.open("POST","softwaresemprestimocadastrarXML.jsp",false);
myXMLHTTPRequest.send(document.getElementById("SalvarXML").innerHTML);
 xmlDoc = myXMLHTTPRequest.responseXML;
 alert(myXMLHTTPRequest.responseXML);
 }

Este é o código da função JavaScript que estou chamando a minha página de ação JSP. A minha página chama softwaresemprestimocadastrarXML.jsp e gostaria de saber como pegar este XML que eu estou enviando para esta página?

Antecipadamente muito obrigado pela ajuda!!!

[color=“green”][size=“7”]* Editado para adicionar o bbcode ;)[/size][/color]

Você precisa comunicar o XML de JavaScript para JSP via strings. Não pode usar objetos…

Ou vc pode usar o componente FileUpload do projeto Jakarta para fazer o upload do seu arquivo e entao usa-lo no servidor

Vinci,

por string eu já passei e aí funciona. Aí no arquivo JSP eu transformo este arquivo texto em um arquivo XML, mas eu procuro alguma forma de passar este arquivo sem ser por string. Deve existir alguma forma de pegar este arquivo do outro lado. Como em Asp.

Mas mesmo assim muito obrigado pela ajuda!!

darkseid,

Vc poderia me falar um pouco mais sobre este FileUpload, e onde eu consigo ver algum exemplo dele?

Muito obrigado pela ajuda!!

Ai Eurimar, talves esse link te ajude, foi um artigo q escrevi q mostra como fazer o upload de uma imagem para o banco de dados… pode te ajudar

muito obrigado darkseid,

Vou dar uma olhada no código e ver se eu adapto ao que eu estou precisando, pois o meu arquivo está em memória.

Valeu!!!

Ae Eurimar, ainda naum entendi muito bem. Vc ta criando esse XML onde?! E pq precisa passar por post!? Explica pra gente o q a sua aplicaçao deve fazer, talvez assim fica mais facil pra visualizarmos…

Darkseid é o seguinte:

Vou tentar explicar melhor.

Eu tenho uma função no javascript q é a função q eu postei no começo. Esta função faz o seguinte:
Ela gera um arquivo XML na memória com os valores dos campos do meu form.
Por que estou fazendo isso?
É o seguinte eu tenho q continuar na tela e não quero fazer um refresh desta tela. Então qdo o cara clicar no botão salvar eu vou pegar todos os valores dos campos e vou colocar em um XML e vou enviar este XML para uma página q vai processar este XML e inserir os dados dele no banco de dados. Eu quero saber como q eu faço para pegar este XML q está na memória nesta página minha q precisa processar este arquivo.

Por exemplo, em ASP eu vou criar um document do outro lado e vou fazer o seguinte:

objDOM = Server.createObject(XMLDOM);
objDOM.loadxml(request);

Este request meu é o arquivo XML q ou estou enviando para esta página. Eu quero saber como q eu faço para pegar o arquivo XML só q em JSP?

Entendeu agora???

Espero que sim!!!

Falou!!!

Bom, vamos la! tentativa numero 1:

vc ja pensou em colcoar o seu XML (ele eh um DOM ?!) na sessao?! Dai vc chama a proxima pagina e ela pega o xml da sessao (claro, vc vai ter q fazer um CAST)

se eu entendi bem o seu problema, creio q essa solucao de certo

Darkseid, eu acho q vc não entendeu ainda.

É o seguinte, este código que eu coloquei na página funciona.
O q eu tô querendo saber é como pegar este arquivo XML q eu estou mandando do outro lado.

EXemplo:
Eu já tentei

Document d = request.getParameter(“XML”);

Tb tentei

Document d = request.getParameter(request);

e tb tentei

String d = request.getParameter(“XML”);
SaxBuilder x = new SAxBuilder()
Document Doc = sb.build(d);

neste último eu peguei o que eu passei como string, mas eu não tô dando conta de converter esta String para um XML.

Falou???

Vê se vc pode me ajudar!!!

Um abraço!!

Tentativa 2
tenta assim:

Document d = (Document) request.getParameter("XML");

e ai, funfou?!

Este eu já tinha tentado e dá o seguinte erro:

Cannot cast from String to Document.

Cara sinseramente eu não sei mais o que fazer.

Vários exemplos da net falam que usando o SaxBuilder eu posso fazer o seguinte:

SaxBuilder sb = new SaxBuilder(false);
Document d = sb.build(String);

Mas nenhum funciona.

hum… ta complicando heim!
faz o seguinte, poe o codigo ai de como vc ta criando o xml

function Salvar()
{
var index = 0;
softwareselecionados = softwareselecionados.substring(0,softwareselecionados.length - 1);
var listasoftwares = softwareselecionados.split(";");
var SoftwareVersao;
var Registro;
var ObjDom;
var xsltProcessor = new XSLTProcessor();
var myDOM;
var xmlDoc;
var myXMLHTTPRequest = new XMLHttpRequest();
var Valido = validar_campos();
var DomXML;

if (!Valido)
{
return false;
}
DomXML = document.getElementById(“SalvarXML”);
Registro = document.createElement(“REGISTRO”);
Registro.setAttribute(“IDUSUARIO”,ID_Usuario);
Registro.setAttribute(“NRRAMAL”,document.Formulario.NRRamal.value);
Registro.setAttribute(“DTEMPRESTIMO”, document.Formulario.DTEmprestimo.value);
DomXML.appendChild(Registro);
for(index = 0; index < listasoftwares.length; index++)
{
SoftwareVersao = listasoftwares[index].split(",");
Softwares = document.createElement(“SOFTWARE”);
Softwares.setAttribute(“IDLINHA”,index+1);
Softwares.setAttribute(“CDSOFTWARE”,SoftwareVersao[0]);
Softwares.setAttribute(“CDVERSAO”,SoftwareVersao[1]);
Registro.appendChild(Softwares);
}
myXMLHTTPRequest.open(“POST”,“softwaresemprestimocadastrarXML.jsp”,false);

// Eu posso mandar deste jeito para eu pegar o XML do outro lado
myXMLHTTPRequest.send(document.getElementById

// Ou posso mandar deste jeito para pegar uma String
myXMLHTTPRequest.send(document.getElementById(“SalvarXML”).innerText);

(“SalvarXML”).innerHTML);
xmlDoc = myXMLHTTPRequest.responseXML;
alert(myXMLHTTPRequest.responseXML);
LimparCampos();

Vou colocar aqui em baixo o código da página que está recebendo isso

Document d = (Document) request;
Element e = d.getRootElement();
XMLOutputter gerar = new XMLOutputter();
gerar.output(e, out);

Já tentei desse jeito tb

String xmlString = request.getParameter(“SalvarXML”);
SAXBuilder sb = new SAXBuilder(“org.apache.xerces.parsers.SAXParser”);
Reader stringReader = new StringReader(xmlString);
Document jdomDocument = sb.build(stringReader);
out.print(jdomDocument);

Vê se você pode me dar uma luz do que estou fazendo de errado.

Falou muito obrigado pela ajuda!!!
}

bom nda a ver com resposta mas sim uma questaum… :sad:

alguem ai tem material ou links
para trabalhar com XML

com o DOM e o SAX…

valeus :eek:

[]´s
Erko Bridee

euromar, eh impressao minha ou vc ta criando o xml em JavaScript!!! Se for, esquece, naum da pra enviar, a menos q vc envie um string e depois parseie do outro lado, nem assim acho q da…

aconselho a vc q crie o xml usando a JSTL (biblioteca de tags padrao para JSP) dai sim vc consegue enviar facil o xml

Darkseid,

resolvi o problema e vou passar o código para vc ver, caso vc precise usar para resolver algum problema.

function Salvar()
{
var index = 0;
softwareselecionados = softwareselecionados.substring(0,softwareselecionados.length - 1);
var listasoftwares = softwareselecionados.split(";");
var SoftwareVersao;
var Registro;
var ObjDom;
var xsltProcessor = new XSLTProcessor();
var myDOM;
var xmlDoc;
var myXMLHTTPRequest = new XMLHttpRequest();
var Valido = validar_campos();
var DomXML;

	if (!Valido)
	{
		return false;
	}
	XMLDoc = document.implementation.createDocument("", "", null);
	Registro = document.createElement("REGISTRO");
	Registro.setAttribute("idusuario",ID_Usuario);
	Registro.setAttribute("nrramal",document.Formulario.NRRamal.value);
	Registro.setAttribute("dtemprestimo", document.Formulario.DTEmprestimo.value);
	XMLDoc.appendChild(Registro);
	for(index = 0; index &lt; listasoftwares.length; index++)
	{
		SoftwareVersao = listasoftwares[index].split(",");
		Softwares = document.createElement("software");
		Softwares.setAttribute("cdsoftware",SoftwareVersao[0]);
		Softwares.setAttribute("cdversao",SoftwareVersao[1]);
		Registro.appendChild(Softwares);
	}
	myXMLHTTPRequest.open("POST","softwaresemprestimocadastrarXML.jsp",false);
	myXMLHTTPRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    myXMLHTTPRequest.send("SalvarXML="+XMLDoc.xml);
	xmlDoc = myXMLHTTPRequest.responseXML;
	alert(xmlDoc.getElementsByTagName("retorno").item(0).getAttribute("resposta"));
	ListaSoftwareAtualizada();
	LimparCampos(); 
}

e apágina q recebe o XML é esta:

<%@ page contentType=“text/xml”%>
<%@ page import=“SOFTWARES.emprestimo”%>
<%@ page import=“org.jdom." %>
<%@ page import="java.io.
” %>
<%@ page import=“org.jdom.output.XMLOutputter” %>
<%@ page import=“org.jdom.input.SAXBuilder” %>

<%
Document jdomDoc = new Document();
StringReader SR = new StringReader(request.getParameter(“SalvarXML”));
SAXBuilder sb = new SAXBuilder();
jdomDoc = sb.build(SR);
emprestimo Inserir = new emprestimo();
String Resposta = Inserir.Inserir_Emprestimo(jdomDoc);
Element ElementoRoot = new Element(“SESS”);
Element Retorno = new Element(“retorno”);
Retorno.setAttribute(“resposta”,Resposta);
ElementoRoot.addContent(Retorno);
XMLOutputter gerar = new XMLOutputter();
gerar.output(ElementoRoot,out);
%>

Muito obrigado por toda a ajuda q vc me deu.
Valeu!!!