XSD -> JAVA - Gerar código

Sua pergunta ficou meio vaga. Layout do que?

De acordo com cada tipo de NFe eu terei que preencher alguns itens.
Gostaria de saber se é possível montar um layout mais flexível. Por exemplo, meu sistema vai identificar automaticamente qual seria o tipo de NFe.
No entanto, para não ter que gerar uma tela pra cada tipo de nota, gostaria de ver a possibilidade de ter um formulário dinamico, hora com mais campos, hora com menos, de acordo com a identificação da nota e/ou de preenchimento dos campos.

Abraço.

[quote=max.analista]Consegui gerar.

xjc tiposBasico_v1.03.xsd leiauteNFe_v2.00.xsd -p br.com.jaxb.nfe

Agora é ver se consigo trabalhar com isto. Obrigado galera :)[/quote]

Obrigado, consegui gerar as classes também segundo a sua dica.
Só uma pergunta, após executar esse comando você encontrou alguns WARNINGS?
Aqui gerou as classes, mas no prompt foi informado que alguns atributos não puderam ser mapeados para um enum (pelo menos foi isso que entendi), isso tem algum problema?

Aqui estão os avisos:
[WARNING] Simple type “TcProdANP” was not mapped to Enum due to EnumMemberSizeCap limit. Facets count: 792, current limit: 256. You can use customization attrib
ute “typesafeEnumMaxMembers” to extend the limit.
line 5541 of file:/D:/Meus%20Documentos/Documentos%20Leandro/GeraþÒo%20de%20NFE%20com%20Java/PL_006q/leiauteNFe_v2.00.xsd

[WARNING] Simple type “Tpais” was not mapped to Enum due to EnumMemberSizeCap limit. Facets count: 275, current limit: 256. You can use customization attribute
“typesafeEnumMaxMembers” to extend the limit.
line 333 of file:/D:/Meus%20Documentos/Documentos%20Leandro/GeraþÒo%20de%20NFE%20com%20Java/PL_006q/tiposBasico_v1.03.xsd

[WARNING] Simple type “TCfop” was not mapped to Enum due to EnumMemberSizeCap limit. Facets count: 518, current limit: 256. You can use customization attribute
“typesafeEnumMaxMembers” to extend the limit.
line 5013 of file:/D:/Meus%20Documentos/Documentos%20Leandro/GeraþÒo%20de%20NFE%20com%20Java/PL_006q/leiauteNFe_v2.00.xsd

Obrigado.

Meu amigo, eu tive que parar o projeto pois assumi outros setores da empresa.

Quanto aos Warnings não te preocupes, apenas verifique se os nós mostrados foram extraídos com o conteúdo correto. Se estiver tudo ok, pode validar isso. Ocorreu um erro quanto ao limit ultrapassado, nada demais. Verifica como o Java trata esse erro, se ele corta o valor no limit, ou se ele extrai toda informação e sugere que você altere as validações.

Abraço.

Então, pesquisando na internet consegui essa solução, criar um arquivo binding.xml e passar como parâmetro para o xjc:

<jxb:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema" 
              xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
              version="2.1">

    <!-- Raise theEnumMemberSizeCap limit -->
    <jxb:bindings >
        <jxb:globalBindings typesafeEnumMaxMembers="2000"/>
    </jxb:bindings>
</jxb:bindings>

E dai utilizei o comando assim:
xjc -b binding.xml tiposBasico_v1.03.xsd leiauteNFe_v2.00.xsd

Funcionou, não apareceu nenhum aviso, erro etc! :slight_smile:
Porém, observando esses avisos que apareciam antes de usar o binding observei que mesmo usando o binding.xml, TcProdANP, Tpais e TCfop não foram gerados. :cry:
Tem algum problema em ficar sem eles? Ou no caso deverei mapear manualmente?
Obrigado :slight_smile:

[quote=Leandro Rocha][quote=max.analista]
[WARNING] Simple type “TcProdANP” was not mapped to Enum due to EnumMemberSizeCap limit. Facets count: 792, current limit: 256. You can use customization attrib
ute “typesafeEnumMaxMembers” to extend the limit.
line 5541 of file:/D:/Meus%20Documentos/Documentos%20Leandro/GeraþÒo%20de%20NFE%20com%20Java/PL_006q/leiauteNFe_v2.00.xsd

[WARNING] Simple type “Tpais” was not mapped to Enum due to EnumMemberSizeCap limit. Facets count: 275, current limit: 256. You can use customization attribute
“typesafeEnumMaxMembers” to extend the limit.
line 333 of file:/D:/Meus%20Documentos/Documentos%20Leandro/GeraþÒo%20de%20NFE%20com%20Java/PL_006q/tiposBasico_v1.03.xsd

[WARNING] Simple type “TCfop” was not mapped to Enum due to EnumMemberSizeCap limit. Facets count: 518, current limit: 256. You can use customization attribute
“typesafeEnumMaxMembers” to extend the limit.
line 5013 of file:/D:/Meus%20Documentos/Documentos%20Leandro/GeraþÒo%20de%20NFE%20com%20Java/PL_006q/leiauteNFe_v2.00.xsd

[/quote]

Resolvido, consegui gerar todos os nós, pelo menos é o que pareceu aqui. :thumbup:
Depois de muita pesquisa e vários teste repletos de ERRORS e WARNINGS consegui montar um arquivo de binding necessário para gerar todos os nós TcProdANP, Tpais e TCfop, sem nenhum aviso ou erro.
Conferi as classes que foram geradas e pelo jeito está tudo ok, graças a Deus. :slight_smile:
Vou deixar aqui as configurações que utilizei:
binding.xml

<jaxb:bindings 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    version="2.1">

    <!-- Configurações globais de binding -->
    <jaxb:bindings >
        <jaxb:globalBindings 
            typesafeEnumMaxMembers="2000"
            localScoping="toplevel"
            typesafeEnumMemberName="generateName"
	   />
    </jaxb:bindings>
   
    <!-- 
        Configurações de binding para tipos que não são mapeados automaticamente ou são ignorados:
        Neste caso foram: 
        Tpais (simpleType) em 'tiposBasico_v1.03.xsd';
        TcProdANP (simpleType) em 'leiauteNFe_v2.00.xsd';
        TCfop (simpleType) em 'leiauteNFe_v2.00.xsd'.
    -->
    
    <!-- Configurações espeficicas para 'tiposBasico_v1.03.xsd' -->
    <jaxb:bindings schemaLocation="tiposBasico_v1.03.xsd">
        <jaxb:bindings node="xs:simpleType[@name='Tpais']">
            <jaxb:typesafeEnumClass name="Tpais"/>
        </jaxb:bindings>
    </jaxb:bindings>
   
    <!-- Configurações espeficicas para 'leiauteNFe_v2.00x.sd' -->
    <jaxb:bindings schemaLocation="leiauteNFe_v2.00.xsd">
        <jaxb:bindings node="xs:simpleType[@name='TcProdANP']">
            <jaxb:typesafeEnumClass name="TcProdANP"/>
        </jaxb:bindings>
        
        <jaxb:bindings node="xs:simpleType[@name='TCfop']">
            <jaxb:typesafeEnumClass name="TCfop"/>
        </jaxb:bindings>
    </jaxb:bindings>
</jaxb:bindings>

<!-- 
Para adicionar dentro do próprio .xsd (Obs: Depois de schema):
<xs:annotation>
    <xs:appinfo>
        Configurações de binding...
    </xs:appinfo>
</xs:annotation>
-->

Depois é só usar o comando:
xjc -b binding.xml tiposBasico_v1.03.xsd leiauteNFe_v2.00.xsd
(Obs: o arquivo binding.xml deve estar salvo com codificação UTF-8)

Os links que me ajudaram são esses:
http://fusesource.com/docs/esb/4.2/jaxws/JAXWSCustomTypeMappingEnum.html
http://stackoverflow.com/questions/586224/jaxb-anonymous-simple-types-as-enums
http://stackoverflow.com/questions/7175363/jaxb-enumeration-with-numeric-values
http://jaxb.java.net/guide/Avoid_strong_databinding.html
http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/2.0/tutorial/doc/JAXBUsing4.html#wp157013
http://efreedom.com/Question/1-9367725/JAXB-GlobalBindings-Bindingsxml-Ignored

Espero que ajude.
Abraço e muito obrigado.

Só para fechar e ficar de referência para os próximos, o resultado foi esse:

parsing a schema…
compiling a schema…
br\inf\portalfiscal\nfe\Adi.java
br\inf\portalfiscal\nfe\Arma.java
br\inf\portalfiscal\nfe\Avulsa.java
br\inf\portalfiscal\nfe\CIDE.java
br\inf\portalfiscal\nfe\COFINS.java
br\inf\portalfiscal\nfe\COFINSAliq.java
br\inf\portalfiscal\nfe\COFINSNT.java
br\inf\portalfiscal\nfe\COFINSOutr.java
br\inf\portalfiscal\nfe\COFINSQtde.java
br\inf\portalfiscal\nfe\COFINSST.java
br\inf\portalfiscal\nfe\Cana.java
br\inf\portalfiscal\nfe\Cobr.java
br\inf\portalfiscal\nfe\Comb.java
br\inf\portalfiscal\nfe\Compra.java
br\inf\portalfiscal\nfe\DI.java
br\inf\portalfiscal\nfe\Deduc.java
br\inf\portalfiscal\nfe\Dest.java
br\inf\portalfiscal\nfe\Det.java
br\inf\portalfiscal\nfe\Dup.java
br\inf\portalfiscal\nfe\Emit.java
br\inf\portalfiscal\nfe\Exporta.java
br\inf\portalfiscal\nfe\Fat.java
br\inf\portalfiscal\nfe\ForDia.java
br\inf\portalfiscal\nfe\ICMS.java
br\inf\portalfiscal\nfe\ICMS00.java
br\inf\portalfiscal\nfe\ICMS10.java
br\inf\portalfiscal\nfe\ICMS20.java
br\inf\portalfiscal\nfe\ICMS30.java
br\inf\portalfiscal\nfe\ICMS40.java
br\inf\portalfiscal\nfe\ICMS51.java
br\inf\portalfiscal\nfe\ICMS60.java
br\inf\portalfiscal\nfe\ICMS70.java
br\inf\portalfiscal\nfe\ICMS90.java
br\inf\portalfiscal\nfe\ICMSPart.java
br\inf\portalfiscal\nfe\ICMSSN101.java
br\inf\portalfiscal\nfe\ICMSSN102.java
br\inf\portalfiscal\nfe\ICMSSN201.java
br\inf\portalfiscal\nfe\ICMSSN202.java
br\inf\portalfiscal\nfe\ICMSSN500.java
br\inf\portalfiscal\nfe\ICMSSN900.java
br\inf\portalfiscal\nfe\ICMSST.java
br\inf\portalfiscal\nfe\ICMSTot.java
br\inf\portalfiscal\nfe\II.java
br\inf\portalfiscal\nfe\IPI.java
br\inf\portalfiscal\nfe\IPINT.java
br\inf\portalfiscal\nfe\IPITrib.java
br\inf\portalfiscal\nfe\ISSQN.java
br\inf\portalfiscal\nfe\ISSQNtot.java
br\inf\portalfiscal\nfe\Ide.java
br\inf\portalfiscal\nfe\Imposto.java
br\inf\portalfiscal\nfe\InfAdic.java
br\inf\portalfiscal\nfe\InfNFe.java
br\inf\portalfiscal\nfe\InfProt.java
br\inf\portalfiscal\nfe\InfRec.java
br\inf\portalfiscal\nfe\Lacres.java
br\inf\portalfiscal\nfe\Med.java
br\inf\portalfiscal\nfe\NFref.java
br\inf\portalfiscal\nfe\ObjectFactory.java
br\inf\portalfiscal\nfe\ObsCont.java
br\inf\portalfiscal\nfe\ObsFisco.java
br\inf\portalfiscal\nfe\PIS.java
br\inf\portalfiscal\nfe\PISAliq.java
br\inf\portalfiscal\nfe\PISNT.java
br\inf\portalfiscal\nfe\PISOutr.java
br\inf\portalfiscal\nfe\PISQtde.java
br\inf\portalfiscal\nfe\PISST.java
br\inf\portalfiscal\nfe\ProcRef.java
br\inf\portalfiscal\nfe\Prod.java
br\inf\portalfiscal\nfe\RefECF.java
br\inf\portalfiscal\nfe\RefNF.java
br\inf\portalfiscal\nfe\RefNFP.java
br\inf\portalfiscal\nfe\RetTransp.java
br\inf\portalfiscal\nfe\RetTrib.java
br\inf\portalfiscal\nfe\TAmb.java
br\inf\portalfiscal\nfe\TCListServ.java
br\inf\portalfiscal\nfe\TCfop.java
br\inf\portalfiscal\nfe\TCfopTransp.java
br\inf\portalfiscal\nfe\TCodUfIBGE.java
br\inf\portalfiscal\nfe\TConsReciNFe.java
br\inf\portalfiscal\nfe\TEnderEmi.java
br\inf\portalfiscal\nfe\TEndereco.java
br\inf\portalfiscal\nfe\TEnviNFe.java
br\inf\portalfiscal\nfe\TFinNFe.java
br\inf\portalfiscal\nfe\TLocal.java
br\inf\portalfiscal\nfe\TMod.java
br\inf\portalfiscal\nfe\TNFe.java
br\inf\portalfiscal\nfe\TNfeProc.java
br\inf\portalfiscal\nfe\TProcEmi.java
br\inf\portalfiscal\nfe\TProtNFe.java
br\inf\portalfiscal\nfe\TRetConsReciNFe.java
br\inf\portalfiscal\nfe\TRetEnviNFe.java
br\inf\portalfiscal\nfe\TUf.java
br\inf\portalfiscal\nfe\TUfEmi.java
br\inf\portalfiscal\nfe\TVeiculo.java
br\inf\portalfiscal\nfe\TcProdANP.java
br\inf\portalfiscal\nfe\Torig.java
br\inf\portalfiscal\nfe\Total.java
br\inf\portalfiscal\nfe\Tpais.java
br\inf\portalfiscal\nfe\Transp.java
br\inf\portalfiscal\nfe\Transporta.java
br\inf\portalfiscal\nfe\VeicProd.java
br\inf\portalfiscal\nfe\Vol.java
br\inf\portalfiscal\nfe\package-info.java
org\w3_2000_09\xmldsig\CanonicalizationMethod.java
org\w3_2000_09\xmldsig\DigestMethod.java
org\w3_2000_09\xmldsig\KeyInfoType.java
org\w3_2000_09\xmldsig\ObjectFactory.java
org\w3_2000_09\xmldsig\ReferenceType.java
org\w3_2000_09\xmldsig\SignatureMethod.java
org\w3_2000_09\xmldsig\SignatureType.java
org\w3_2000_09\xmldsig\SignatureValueType.java
org\w3_2000_09\xmldsig\SignedInfoType.java
org\w3_2000_09\xmldsig\TransformType.java
org\w3_2000_09\xmldsig\TransformsType.java
org\w3_2000_09\xmldsig\X509DataType.java
org\w3_2000_09\xmldsig\package-info.java

Abraço. :slight_smile:

Outra coisa, se tiveram problemas com codificação ao utilizar as classes geradas no NetBeans ou Eclipse, usem o comando dessa forma:
xjc -b binding.xml tiposBasico_v1.03.xsd leiauteNFe_v2.00.xsd -encoding utf-8
:thumbup:

E para quem usa o netbeans para gerar os .java via o WSDL???
Estou apanhando até! Alguém tem alguma dica?