Boa tarde,
Estou enfrentando um problema ao tentar fazer unmarshal de um XML de retorno do envio de CTe versão 3.0. Estou recebendo o seguinte XML do webservice:
<retEnviCte xmlns="http://www.portalfiscal.inf.br/cte" versao="3.00"><tpAmb>2</tpAmb><cUF>43</cUF><verAplic>RS20170524123312</verAplic><cStat>103</cStat><xMotivo>Lote recebido com sucesso</xMotivo><infRec><nRec>431000011194855</nRec><dhRecbto>2017-06-13T13:27:22-03:00</dhRecbto><tMed>1</tMed></infRec></retEnviCte>
Quero converter para a classe TRetEnviCTe que está assim:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "TRetEnviCTe", propOrder = {
"tpAmb",
"cuf",
"verAplic",
"cStat",
"xMotivo",
"infRec"
})
public class TRetEnviCTe {
@XmlElement(required = true)
protected String tpAmb;
@XmlElement(name = "cUF", required = true)
protected String cuf;
@XmlElement(required = true)
protected String verAplic;
@XmlElement(required = true)
protected String cStat;
@XmlElement(required = true)
protected String xMotivo;
protected TRetEnviCTe.InfRec infRec;
@XmlAttribute(name = "versao", required = true)
protected String versao;
//Getters and setters
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"nRec",
"dhRecbto",
"tMed"
})
public static class InfRec {
@XmlElement(required = true)
protected String nRec;
@XmlElement(required = true)
protected String dhRecbto;
@XmlElement(required = true)
protected BigInteger tMed;
//Getters and setters
}
}
Percebam que a classe InfRec está aninhada em TRetEnviCTe. Quando faço unmarshal do XML para a classe através do método a seguir, os campos são preenchidos corretamente exceto o objeto InfRec, que é criado mas fica com seus atributos nulos.
private static TRetEnviCTe getDocumentRet(String xml) throws JAXBException {
JAXBContext context2 = JAXBContext.newInstance(TRetEnviCTe.class);
Unmarshaller unmarshaller2 = context2.createUnmarshaller();
return unmarshaller2.unmarshal(new StreamSource(new StringReader(xml)), TRetEnviCTe.class).getValue();
}
Alguma ideia do que poderia estar causando este problema?
Obrigado