Login Registre-se
[RESOLVIDO] Erro ao gerar XML de EnviNFe com JAXB  XML
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Autor Mensagem
ul1sses

JavaC Membro

Membro desde: 11/05/2012 11:16:30
Mensagens: 17
Offline

Estou gerando o XML a partir do JAXB já fazendo a validação no momento da geração, porém está ocorrendo o seguinte erro:

org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'idLote'. One of '{"http://www.portalfiscal.inf.br/nfe":idLote}' is expected.



Alguma luz por favor. :/

OBS: Não é validação do WEBSERVICE. É validação com o esquema local (XSD)!

Esta mensagem foi editada 2 vezes. Última atualização foi em 01/12/2012 01:57:47

ul1sses

JavaC Membro

Membro desde: 11/05/2012 11:16:30
Mensagens: 17
Offline

Comentei o código que define o esquema no marshaller, então gerou o XML abaixo.
O problema é que não consegui identificar por que ele acusa o erro citado no tópico quando configuro para ser feita validação no momento da geração do XML, sendo que o idLote está sendo passado.

Quasar

JavaC Membro

Membro desde: 15/06/2012 09:57:00
Mensagens: 52
Offline

ulisses,

o problema não esta apenas no idlote mas quase q no xml inteiro; o idlote eh apenas o primeiro.

Mas existem varias soluções. Vou mostrar aquela q não usa prefixos pq a sefaz não gosta deles rsss.

Basta vc usar, para o enviNFe

e para Signature
ul1sses

JavaC Membro

Membro desde: 11/05/2012 11:16:30
Mensagens: 17
Offline

Qual seria o problema exatamente? A mensagem de erro diz que o idLote tem conteúdo inválido e bem depois diz que essa tag obrigatória não foi encontrada, sendo que ela é passada normalmente como você pode ver no XML gerado SEM VALIDAÇÃO.

Lembrar, como eu citei anteriormente, que ainda não estou consumindo os webservices da sefaz, estou apenas validando com com o esquema XSD locamente.
Quasar

JavaC Membro

Membro desde: 15/06/2012 09:57:00
Mensagens: 52
Offline

Ola Ulisses,

Em primeiro lugar eh preciso saber q o nome de um elemento, sozinho, não significa muita coisa. Deve ter, associado a ele, um "namespace" indicado por uma URI.
Por ex., a declaração
<ns3:enviNFe xmlns:ns3="http://www.portalfiscal.inf.br/nfe">
especifica q o elemento enviNFe e todos os seus descendentes q tenham o prefixo ns3 pertencem ao "namespace" de http://www.portalfiscal.inf.br/nfe.
Vc colocou o elemento <idLote> sem prefixo. Ok, tudo bem, mas o prefixo vazio tb deve ser declarado, no idLote ou num elemento antecedente (como o enviNFe) com o atributo xmlns="http://www.portalfiscal.inf.br/nfe". No seu xml isso não estah declarado. Sem a declaração, um "parser" interpreta os elementos com nome sem prefixo como pertencentes ao "namespace" com URI nula, enquanto a sefaz exige a presença do elemento idLote (e os outros q ela especificou) com "namespace" de http://www.portalfiscal.inf.br/nfe.

Chato, ne? Mas não eh complicado e espero q tenha compreendido. Se não, vamos partir pra procurar uma explicação melhor, ok?

Abraços!
ul1sses

JavaC Membro

Membro desde: 11/05/2012 11:16:30
Mensagens: 17
Offline

Certo. Então como eu posso definir os namespaces corretamente na hora do marshalling?
jocabaldini

JavaC Membro

Membro desde: 31/10/2012 14:21:25
Mensagens: 178
Offline

Segue como fiz o XML aqui:



Essa é parte do codigo passado pelo Maciel no link http://www.javac.com.br/jc/posts/list/92-nfe-envinfe-utilizando-jaxb-xml-nfe-completo.page para criar o XML do EnviNFe.
ul1sses

JavaC Membro

Membro desde: 11/05/2012 11:16:30
Mensagens: 17
Offline

Observar que estou fazendo a validação NO MOMENTO da criação do xml apartir do objeto.



Nesses exemplos do site, quase sempre, verifica-se que a validação é feita DEPOIS de gerar o xml.

Esta mensagem foi editada 1 vez. Última atualização foi em 28/11/2012 15:50:02

ul1sses

JavaC Membro

Membro desde: 11/05/2012 11:16:30
Mensagens: 17
Offline

Bom, descobri que o problema ocorre devido ao fato de eu ter migrado do eclipse GALILEO para o HELIOS.

Agora a questão é descobrir exatamente o por que do erro, visto que eu apenas importei o projeto para o novo eclipse.

Debugando o sistema que usa o WAR gerado pelo eclipse galileo, o método marshall gera o XML validado. Gerando o WAR pelo eclipse helios, o método retorna uma exception com a mensagem que citei no tópico.

O que buga o meu cérebro é que não consegui ainda enxergar o que está diferente de uma IDE para outra.

Por enquanto o jeito é usar a IDE antiga.

Agradeço a quem tentou ajudar.

Esta mensagem foi editada 1 vez. Última atualização foi em 29/11/2012 15:51:02

ul1sses

JavaC Membro

Membro desde: 11/05/2012 11:16:30
Mensagens: 17
Offline

A única diferença entre os dois que encontrei foi a versão do ANT usada para gerar o build. Atualizei a versão do Ant no helios então funcionou tudo certinho.
Vai entender....
jeroqueiroz

Moderador
[Avatar]

Membro desde: 11/06/2011 09:45:18
Mensagens: 1348
Localização: Bahia
Offline

Tinha um projeto no Eclipse Hélios e atualmente estou utilizando o Eclipse Juno.

Eu não importei o projeto antigo, pois de fato estava fazendo um novo, porém eu criei um projeto Novo porque neste estou utilizando JPA + Hibernate e coloquei a parte da NF-e e esta tudo funcionando perfeitamente.

Estou usando Java 7, Tomcat 7, Eclipse Juno, JPA 2, Hibernate 3.6 e JSF 2 (ainda irei inserir).

Jeremias Santos
Seguir no Twitter @jeroqueiroz
Blog Jeroqueiroz


Projeto NF-e, CT-e, CC-e? Comece Por Aqui!


Membros do fórum,

Usem a tag [code] e [/code] quando postarem Códigos Java e ou exemplos de XMLs.
Evitem tópicos duplicados.
Tópico solucionado? Edite o primeiro post e coloque [RESOLVIDO] no final do título.
Evitem reviver tópicos antigos.

O tópico resolveu seu problema? Seja gentil, comente e ou agradeça quem contribuiu com a solução.

Obrigado!
[Email] [WWW] [Yahoo!] [MSN]
 
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Ir para:   
Powered by JForum 2.1.9 © JForum Team