Pessoal, bom dia.
A fim de realizar alguns testes, alterei a forma como a função de inutilização(módulos da NFe) pega os dados do XML, agora utilizando a API StAX.
Segue onde alterei no código:
//COMO ERA REALIZADO ANTES
/*XML de Consulta*/
OMElement ome = AXIOMUtil.stringToOM(nfeDadosMsg.toString());
NfeDadosMsg dadosMsg = new NfeDadosMsg();
dadosMsg.setExtraElement(ome);
..
..
..
NfeInutilizacao2Stub stub = new NfeInutilizacao2Stub(url.toString());
NfeInutilizacaoNF2Result result = stub.nfeInutilizacaoNF2(dadosMsg, nfeCabecMsgE);
// COMO É REALIZADO AGORA, UTILIZANDO UMA NOVA FORMA DE PEGAR OS dados DO XML COM A API StAX
//Define os dados XML
ByteArrayInputStream baisDados = new ByteArrayInputStream(nfeDadosMsg.getBytes());
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
xmlInputFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE,Boolean.FALSE);
XMLStreamReader xmlReader = xmlInputFactory.createXMLStreamReader(baisDados);
..
..
..
NfeInutilizacao2Stub.NfeDadosMsg dado = NfeInutilizacao2Stub.NfeDadosMsg.Factory.parse(xmlReader);
NfeInutilizacaoNF2Result result = new NfeInutilizacao2Stub(http)
.nfeInutilizacaoNF2(dado, nfeCabecMsgE);
Enfim, o problema é que quando passo um XML de inutilização assinado, o aplicativo de exemplo que criei gera este erro:
Exception in thread "main" java.lang.Exception: org.apache.axis2.databinding.ADBException: Unexpected subelement Signature
at br.inf.portalfiscal.www.nfe.wsdl.nfeinutilizacao2.NfeInutilizacao2Stub$NfeDadosMsg$Factory.parse(NfeInutilizacao2Stub.java:1289)
at inut.Inutilizacao.getInutilizacao(Inutilizacao.java:54)
at inut.Inut.main(Inut.java:21)
Caused by: org.apache.axis2.databinding.ADBException: Unexpected subelement Signature
at br.inf.portalfiscal.www.nfe.wsdl.nfeinutilizacao2.NfeInutilizacao2Stub$NfeDadosMsg$Factory.parse(NfeInutilizacao2Stub.java:1283)
... 2 more
Java Result: 1
Outra dúvida que tenho é em relação a esta linha de código:
xmlInputFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE,Boolean.FALSE);
Pra que serve? Lembrando que tenho que alterar para Boolean.TRUE quando envio um xml de envio “não assinado” (quando não esta assinado, a sefaz retorna um xml com o resultado do processamento)
Lembrando que nem é um problema pessoal, estou apenas realizando alguns testes, afim de utilizar as apis do Java invez de utilizar uma API de terceiros.
Agradeço desde já 