Ola Pessoal! Estou com um problema para trasformar uma String que recebo de um webservices em XML.
Minha Classe de Importação
/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package br.com.pjwscotacao.Servico;
import br.com.pjwscotacao.DAO.Connectionfactory;
import br.com.pjwscotacao.DAO.CotacaoDAOImp;
import br.com.pjwscotacao.DAO.ItensCotacaoDAOImp;
import br.com.pjwscotacao.modelo.Cotacao;
import br.com.pjwscotacao.modelo.ItensCotacao;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
*
-
@author Vitor
*/
public class CotacaoXmlDAOImp {public boolean CadastrarCotacaoXML(String arqXML) {
// boolean retorno = false; Connectionfactory _conn = new Connectionfactory(); try { //File fXmlFile = new File(arqXML); /*@SuppressWarnings("static-access") File fXmlFile = new File("\\XMLCotacao\\Cotacao.xml", arqXML);//createTempFile("XMLCotacao/Cotacao.xml"); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(fXmlFile); doc.getDocumentElement().normalize();*/ File fXmlFile = new File(arqXML, "\\XMLCotacao\\Cotacao.xml"); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(fXmlFile); doc.getDocumentElement().normalize(); //System.out.println("Root element :" + doc.getDocumentElement().getNodeName()); NodeList nList = doc.getElementsByTagName("TCotacao"); //System.out.println("-----------------------"); Node nNode = nList.item(0); Element eElement = (Element) nNode; Cotacao cotacao = new Cotacao(); CotacaoDAOImp _Cdao = new CotacaoDAOImp(); SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy"); Date abertura = formato.parse(getTagValue("DataAbertura", eElement)); //Iniciando a Tranzação _conn.IniciaTranzacao(); System.out.println("***** Iniciando a Tranzação *******"); int _IdEmpresa = Integer.parseInt(getTagValue("IdEmpresa", eElement)); double _NCotacao = Double.parseDouble(getTagValue("IdCotacao", eElement)); cotacao.getEmpresa().setIdempresa(_IdEmpresa); cotacao.setCot_data_abertura(abertura); cotacao.setCot_obs(getTagValue("Obs", eElement)); cotacao.setCot_ncotacao(_NCotacao); _Cdao.cadastrar(cotacao); NodeList Itens = doc.getElementsByTagName("Itens"); for (int temp = 0; temp < Itens.getLength(); temp++) { Node nNodeItens = Itens.item(temp); Element ieElement = (Element) nNodeItens; ItensCotacao icotacao = new ItensCotacao(); ItensCotacaoDAOImp _ICDao = new ItensCotacaoDAOImp(); icotacao.getCotacoes().setIdcotacoes(_NCotacao); icotacao.getEmpresa().setIdempresa(_IdEmpresa); icotacao.setIc_idproduto(getTagValue("IdProduto", ieElement)); icotacao.setIc_nome_produto(getTagValue("NomeProduto", ieElement)); icotacao.setIc_un_produto(getTagValue("UnProduto", ieElement)); icotacao.setIc_qtd_solicitada(Double.parseDouble(getTagValue("QtdSolicitada", ieElement))); _ICDao.cadastrar(icotacao); } //retorno = true; } catch (Exception e) { //_conn.RollbackTranzacao(); e.printStackTrace(); } _conn.CommitTranzacao(); return true;
}
/* private static String getTagValue(String sTag, Element eElement) {
NodeList nlList = eElement.getElementsByTagName(sTag).item(0).getChildNodes();
Node nValue = (Node) nlList.item(0);return nValue.getNodeValue();
}*/
private String getTagValue( String sTag, Element eElement ) throws Exception {
NodeList children = eElement.getElementsByTagName( sTag );if( children == null ) return null; Element child = (Element) children.item(0); if( child == null ) return null; return child.getFirstChild().getNodeValue();
}
}
No metodo do webservices ele chega como uma String assim:
cxml.CadastrarCotacaoXML(CotacaoXML);
A pessoal problema no XMl não é por que ele foi assinado pela W3C.
Se aguem puder dar uma ajuda.