Login Registre-se
JAXB - Quais XSD usar para gerar as classes  XML
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Autor Mensagem
jocabaldini

JavaC Membro

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

Bom dia.

Baixei os XSD do site da SEFAZ para gerar as classes usando o JAXB. No download veio os seguintes xsd:
cancNFe_v2.00.xsd, consCad_v2.00.xsd, consReciNFe_v2.00.xsd, consSitNFe_v2.00.xsd, consStatServ_v2.00.xsd, enviNFe_v2.00.xsd, inutNFe_v2.00.xsd, leiauteCancNFe_v2.00.xsd, leiauteConsSitNFe_v2.00.xsd, leiauteConsStatServ_v2.00.xsd, leiauteConsultaCadastro_v2.00.xsd, leiauteInutNFe_v2.00.xsd, leiauteNFe_v2.00.xsd, nfe_v2.00.xsd, procCancNFe_v2.00.xsd, procInutNFe_v2.00.xsd, procNFe_v2.00.xsd, retCancNFe_v2.00.xsd, retConsCad_v2.00.xsd, retConsReciNFe_v2.00.xsd, retConsSitNFe_v2.00.xsd, retConsStatServ_v2.00.xsd, retEnviNFe_v2.00.xsd, retInutNFe_v2.00.xsd, tiposBasico_v1.03.xsd e xmldsig-core-schema_v1.01.xsd.

Criei um projeto e dentro dele um pacote para cada um dos XSD. Gerei as classas com o JAXB e pretendo transformar o projeto em um jar e usá-lo no meu projeto.

Mas antes de criar a jar vi que alguns XSD geram as mesmas classes (pelo que verifiquei as classes são exatamente iguais), por exemplo o enviNFe_v2.00.xsd, leiauteNFe_v2.00.xsd e o nfe_v2.00.xsd geram as mesmas classes e acredito que isso acontece com todos os XSD semelhantes (cancelamento, inutilização, etc).

Minha dúvida é devo geras as classes de todos os XSD mesmo ou apenas de alguns? Se forem só de alguns, quais os XSD que devo usar?

Grato desde já,

Joca
lreis

JavaC Membro
[Avatar]

Membro desde: 19/04/2012 17:34:31
Mensagens: 21
Offline

Bom dia jocabaldini,

Estava verificando os schemas da SEFAZ, o schema principal utilizado para validação é o nfe_v2.00.xsd, nele há um 'schemaLocation' que puxa o schema
leiauteNFe_v2.00.xsd, não sei lhe dizer ao certo o porque desta divisão, mas acredito que um seja complemento do outro. Se você gerar o xml de exemplo apartir
do schema verá que no nfe_v2.00.xsd o xml vem completo, ja com o leiauteNFe_v2.00.xsd ele gera apenas a assinatura.
Já o schema enviNFe deve ser utilizado para envio em lote, pois possui a tag idLote no mesmo grupo que NFe.

Não quero lhe deixar mais confuso, encare apenas como um comentário sobre o que analisei nos schemas.

Boa sorte.
jocabaldini

JavaC Membro

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

Deixa eu ver se entendi.

Devo gerar o jar com todos os pacotes (gerei um pacote pra cada XSD) e usar as classes de acordo com o a necessidade (gerar e validar o XML com o nfe, envio com o enviNFe, etc).

É isso?

Não achei nenhuma diferença nas classes geradas, por isso a confusão.
jocabaldini

JavaC Membro

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

As diferenças são nas classes ObjectFactory criadas.

E isso criou outra dúvida.

Eu fiz minha classe para gerar o XML com base no exemplo http://www.javac.com.br/jc/posts/list/92-nfe-envinfe-utilizando-jaxb-xml-nfe-completo.page do Maciel.

Portantos as classes são do XSD enviNFe_v2.00.xsd.

Pelo que o Ireis disse o certo pra gerar e validar os XML é o XSD nfe_v2.00.xsd.

Se for isso mesmo, alguem teria um exemplo de como gerou o XML?

Segue minha classe para gerar o XML:


A classe contém alguns erros pois importei apenas as classes geradas pelo XSD nfe_v2.00.xsd e ela não contem o createEnviNFe no ObjectFactory.

E a parte da validação é só pra verificar se falta apenas assinar ou se o usuário precisa preencher/alterar algum campo.
 
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Ir para:   
Powered by JForum 2.1.9 © JForum Team