Ler string com xml

5 respostas
C

Beleza galera, to aqui para pedir um arrego pra vcs novamente.

Seguinte eu estou recebendo uma resposta do webservice na NF-e que esta me retorna em uma string;

NfeStatusServicoSoap nfeStatus = service.getNfeStatusServicoSoap();  
             String resultado = nfeStatus.nfeStatusServicoNF(nfeCabecMsg, nfeDadosMsg);

o variavel resultado vem nesse formato xml:

como eu faço para pegar o resultado dos campos no xml.
tipo xMotivo=“Servico em Operação”
cUF = “35”
cStat=“107”

5 Respostas

rsakurai

Da uma olhada no XStream, através dele vc converte esse resultado XML em objeto.

http://xstream.codehaus.org/

Focao

Digester digester = new Digester();


http://www.guj.com.br/posts/list/5915.java

C

galera valeu pela força, consegui com digester

String resultado = "<?xml version="1.0" encoding="UTF-8"?><retConsStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.07"><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_005b</verAplic><cStat>107</cStat><xMotivo>Serviço em Operação</xMotivo><cUF>35</cUF><dhRecbto>2008-11-14T09:31:07</dhRecbto><tMed>0</tMed></retConsStatServ>
"
        Digester digest = new Digester();
        digest.setValidating(false);
        digest.addObjectCreate("retConsStatServ",cpm.ws.StatusServico.class );
      
        digest.addBeanPropertySetter("retConsStatServ/tpAmb", "tpAmb");
        digest.addBeanPropertySetter("retConsStatServ/verAplic", "verAplic");
        digest.addBeanPropertySetter("retConsStatServ/cStat","cstat");
        digest.addBeanPropertySetter("retConsStatServ/xMotivo","xmotivo");
        
        try {
            cpm.ws.StatusServico status = (cpm.ws.StatusServico) digest.parse(new StringReader(resultado));
            return status;
J

Utiliza o JDOM (http://www.jdom.org/) fica muito facil.

Segue uma sintaxe para você entender o negocio:

//local onde está armazenado o xml
File file = new File("c:\\seudocumento.xml");

//objeto que vai nós retornar a estrutura do mesmo
SAXBuilder saxBuilder = new SAXBuilder();

//xml estruturado e pronto para ser lido        
Document document = saxBuilder.build(file);
        
//recupera o elemento pai de todo mundo
Element root= document.getRootElement();

//
String xMotivo = root.getChildText("xMotivo");

Abraço

renzonuccitelli

Com o JColtrane (http://jcoltrane.sourceforge.net/index_pt.html) vc resolve isso com uma linha de código. Vc só precisa colocar uma anotação dizendo os atributos que vc quer recuperar o valor.

Criado 13 de novembro de 2008
Ultima resposta 14 de nov. de 2008
Respostas 5
Participantes 5