Duvida gerar XML...uso Xstream ou outro framework

1 resposta
P

Olá pessoal

tenho que gerar um arquivo XML como exemplo abaixo
qual framework poderia usar para gerar dessa forma onde vou carregar
um TO com dados tentei usar o XStream mas a hora de gerar o XML não sai na sequencia campos
que defini na classe as informações ou não usei certo a sequencia dos campos…pois tenho que seguir o layout conforme ultimo xml abaxo…Outra duida como inserir uma linhano xml como <idLote>112</idLote> .verificar o ultimo xml que tenho que gerar…

Pois nunca usei XStream e posso estar fazendo errado ou existe outros framework para essa necessidade.

Se alguém puder me ajudar agradeceria…

o que saiu....
Contatos em XML:
&lt;NFE&gt;
  &lt;ide&gt;
    &lt;cNF&gt;NR Nota 123456&lt;/cNF&gt;
    &lt;cUF&gt;SP&lt;/cUF&gt;
    &lt;emit&gt;
      &lt;CNPJ&gt;CNPJ&lt;/CNPJ&gt;
      &lt;xNome&gt;Meu Nome&lt;/xNome&gt;
    &lt;/emit&gt;
    &lt;indPag&gt;A vista&lt;/indPag&gt;
    &lt;natOp&gt;Venda&lt;/natOp&gt;
  &lt;/ide&gt;
&lt;/NFE&gt;


mas queria que saisse assim
&lt;NFE&gt;

  &lt;ide&gt;
    &lt;cNF&gt;NR Nota 123456&lt;/cNF&gt;
    &lt;cUF&gt;SP&lt;/cUF&gt;
    &lt;indPag&gt;A vista&lt;/indPag&gt;   !!! na sequencia
    &lt;natOp&gt;Venda&lt;/natOp&gt;

  &lt;/ide&gt;  !!fechando a tag

    &lt;emit&gt;
      &lt;CNPJ&gt;CNPJ&lt;/CNPJ&gt;
      &lt;xNome&gt;Meu Nome&lt;/xNome&gt;
    &lt;/emit&gt;
    
&lt;/NFE&gt;

--ide
public class ide {

	String cUF;
	String cNF;
	String natOp;
	String indPag;
	emit emit;
	
--emit
public class emit {
 String CNPJ;
 String xNome;
---test
public class TesteXStream1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		         XStream xstream = new XStream();
		         xstream.alias("emit", emit.class);
		         xstream.alias("ide", ide.class);
		         xstream.alias("NFE", ArrayList.class);
		         
		         // Criando alguns dados
		         ide ide = new ide();
		         ide.setCNF("NR Nota 123456");
		         ide.setCUF("SP");
		         ide.setIndPag("A vista");
		         ide.setNatOp("Venda");
		 
		         emit emit = new emit();
		         emit.setCNPJ("CNPJ");
		         emit.setXNome("Meu Nome");
		         
		         
		         ide.setEmit(emit);
		         
		         List contatos = new ArrayList(1);
		         contatos.add(ide);
		 
		         // Passando os dados de Objetos Java para XML
		         String contatosEmXML = xstream.toXML(contatos);
		 
		         System.out.println("\nContatos em XML:");
		         System.out.println(contatosEmXML);
----arquivo que quero gerar

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.10"&gt;
    &lt;idLote&gt;112&lt;/idLote&gt;
    &lt;NFe&gt;
        &lt;infNFe Id="NFe43080503976619000124550010000012846153820717" versao="1.10"&gt;
            &lt;ide&gt;
                &lt;cUF&gt;43&lt;/cUF&gt;
                &lt;cNF&gt;615382071&lt;/cNF&gt;
                &lt;natOp&gt;Venda de produção do estabelecimento&lt;/natOp&gt;
                &lt;indPag&gt;0&lt;/indPag&gt;
                &lt;mod&gt;55&lt;/mod&gt;
                &lt;serie&gt;1&lt;/serie&gt;
                &lt;nNF&gt;1284&lt;/nNF&gt;
                &lt;dEmi&gt;2008-05-26&lt;/dEmi&gt;
                &lt;dSaiEnt&gt;2008-05-26&lt;/dSaiEnt&gt;
                &lt;tpNF&gt;1&lt;/tpNF&gt;
                &lt;cMunFG&gt;4314902&lt;/cMunFG&gt;
                &lt;tpImp&gt;1&lt;/tpImp&gt;
                &lt;tpEmis&gt;1&lt;/tpEmis&gt;
                &lt;cDV&gt;7&lt;/cDV&gt;
                &lt;tpAmb&gt;2&lt;/tpAmb&gt;
                &lt;finNFe&gt;1&lt;/finNFe&gt;
                &lt;procEmi&gt;0&lt;/procEmi&gt;
                &lt;verProc&gt;1.10.06&lt;/verProc&gt;
            &lt;/ide&gt;
            &lt;emit&gt;
                &lt;CNPJ&gt;03976619000124&lt;/CNPJ&gt;
                &lt;xNome&gt;CASTOLDI DIESEL LTDA&lt;/xNome&gt;
                &lt;xFant&gt;NFe Tecnologia&lt;/xFant&gt;
                &lt;enderEmit&gt;
                    &lt;xLgr&gt;Rua Mariante&lt;/xLgr&gt;
                    &lt;nro&gt;288&lt;/nro&gt;
                    &lt;xCpl&gt;Sala 1103, 11 Andar&lt;/xCpl&gt;
                    &lt;xBairro&gt;Rio Branco&lt;/xBairro&gt;
                    &lt;cMun&gt;4314902&lt;/cMun&gt;
                    &lt;xMun&gt;Porto Alegre&lt;/xMun&gt;
                    &lt;UF&gt;RS&lt;/UF&gt;
                    &lt;CEP&gt;90430180&lt;/CEP&gt;
                &lt;/enderEmit&gt;
                &lt;IE&gt;[telefone removido]&lt;/IE&gt;
            &lt;/emit&gt;
            &lt;dest&gt;
                &lt;CNPJ&gt;26810556000137&lt;/CNPJ&gt;
                &lt;xNome&gt;CASTOLDI DIESEL LTDA&lt;/xNome&gt;
                &lt;enderDest&gt;
                    &lt;xLgr&gt;RUA NOVA OLINDA&lt;/xLgr&gt;
                    &lt;nro&gt;85&lt;/nro&gt;
                    &lt;xBairro&gt;DOM AQUINO&lt;/xBairro&gt;
                    &lt;cMun&gt;5103403&lt;/cMun&gt;
                    &lt;xMun&gt;Cuiabá&lt;/xMun&gt;
                    &lt;UF&gt;MT&lt;/UF&gt;
                &lt;/enderDest&gt;
                &lt;IE&gt;131291432&lt;/IE&gt;
            &lt;/dest&gt;
            &lt;det nItem="1"&gt;
                &lt;prod&gt;
                    &lt;cProd&gt;AAAEEE32123&lt;/cProd&gt;
                    &lt;cEAN&gt;25874521&lt;/cEAN&gt;
                    &lt;xProd&gt;Camisa Oficial Grêmio 2008 (Branca)&lt;/xProd&gt;
                    &lt;CFOP&gt;5101&lt;/CFOP&gt;
                    &lt;uCom&gt;pc&lt;/uCom&gt;
                    &lt;qCom&gt;1.0000&lt;/qCom&gt;
                    &lt;vUnCom&gt;150.0000&lt;/vUnCom&gt;
                    &lt;vProd&gt;150.00&lt;/vProd&gt;
                    &lt;cEANTrib&gt;25874521&lt;/cEANTrib&gt;
                    &lt;uTrib&gt;pc&lt;/uTrib&gt;
                    &lt;qTrib&gt;1.0000&lt;/qTrib&gt;
                    &lt;vUnTrib&gt;0.0000&lt;/vUnTrib&gt;
                &lt;/prod&gt;
                &lt;imposto&gt;
                    &lt;ICMS&gt;
                        &lt;ICMS00&gt;
                            &lt;orig&gt;1&lt;/orig&gt;
                            &lt;CST&gt;00&lt;/CST&gt;
                            &lt;modBC&gt;1&lt;/modBC&gt;
                            &lt;vBC&gt;150.00&lt;/vBC&gt;
                            &lt;pICMS&gt;11.00&lt;/pICMS&gt;
                            &lt;vICMS&gt;16.50&lt;/vICMS&gt;
                        &lt;/ICMS00&gt;
                    &lt;/ICMS&gt;
                    &lt;IPI&gt;
                        &lt;cEnq&gt;999&lt;/cEnq&gt;
                        &lt;IPINT&gt;
                            &lt;CST&gt;02&lt;/CST&gt;
                        &lt;/IPINT&gt;
                    &lt;/IPI&gt;
                    &lt;PIS&gt;
                        &lt;PISNT&gt;
                            &lt;CST&gt;07&lt;/CST&gt;
                        &lt;/PISNT&gt;
                    &lt;/PIS&gt;
                    &lt;COFINS&gt;
                        &lt;COFINSAliq&gt;
                            &lt;CST&gt;01&lt;/CST&gt;
                            &lt;vBC&gt;0.00&lt;/vBC&gt;
                            &lt;pCOFINS&gt;0.00&lt;/pCOFINS&gt;
                            &lt;vCOFINS&gt;0.00&lt;/vCOFINS&gt;
                        &lt;/COFINSAliq&gt;
                    &lt;/COFINS&gt;
                &lt;/imposto&gt;
            &lt;/det&gt;
            &lt;total&gt;
                &lt;ICMSTot&gt;
                    &lt;vBC&gt;150.00&lt;/vBC&gt;
                    &lt;vICMS&gt;16.50&lt;/vICMS&gt;
                    &lt;vBCST&gt;0.00&lt;/vBCST&gt;
                    &lt;vST&gt;0.00&lt;/vST&gt;
                    &lt;vProd&gt;150.00&lt;/vProd&gt;
                    &lt;vFrete&gt;0.00&lt;/vFrete&gt;
                    &lt;vSeg&gt;0.00&lt;/vSeg&gt;
                    &lt;vDesc&gt;0.00&lt;/vDesc&gt;
                    &lt;vII&gt;0.00&lt;/vII&gt;
                    &lt;vIPI&gt;0.00&lt;/vIPI&gt;
                    &lt;vPIS&gt;0.00&lt;/vPIS&gt;
                    &lt;vCOFINS&gt;0.00&lt;/vCOFINS&gt;
                    &lt;vOutro&gt;0.00&lt;/vOutro&gt;
                    &lt;vNF&gt;150.00&lt;/vNF&gt;
                &lt;/ICMSTot&gt;
            &lt;/total&gt;
            &lt;transp&gt;
                &lt;modFrete&gt;0&lt;/modFrete&gt;
            &lt;/transp&gt;
        &lt;/infNFe&gt;
        &lt;Signature xmlns="http://www.w3.org/2000/09/xmldsig#"&gt;
            &lt;SignedInfo&gt;
                &lt;CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/&gt;
                &lt;SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/&gt;
                &lt;Reference URI="#NFe43080503976619000124550010000012846153820717"&gt;
                    &lt;Transforms&gt;
                        &lt;Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/&gt;
                        &lt;Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/&gt;
                    &lt;/Transforms&gt;
                    &lt;DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/&gt;
                    &lt;DigestValue&gt;pX7KOnLCGqRafsaeHnN31SapIvY=&lt;/DigestValue&gt;
                &lt;/Reference&gt;
            &lt;/SignedInfo&gt;
            &lt;SignatureValue&gt;nSF2AKIfYXU6Iyk7BNXRyFN+oSsXVLeglMlHirpFEujDBRAKgKfA5+8N/47a1slEkp32lcCiMAP3L1mYDF5kNXLq70YUF3YIlfkxYEmYg4cnvtcyJG9c0WQrAZAy+6kPt01YKWwjDqDFAwkzR6A0FghVRT7m19agUN+6VSKdToc=&lt;/SignatureValue&gt;
            &lt;KeyInfo&gt;
                &lt;X509Data&gt;
                    &lt;X509Certificate&gt;MIIFIjCCBAqgAwIBAgIQAK68uikJldUdA307hwTxdTANBgkqhkiG9w0BAQUFADBuMQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDEsMCoGA1UECxMjU2VjcmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwgLSBTUkYxHDAaBgNVBAMTE0FDIENlcnRpU2lnbiBTUkYgVjMwHhcNMDcxMTI3MDAwMDAwWhcNMDgxMTI2MjM1OTU5WjCBqTELMAkGA1UEBhMCQlIxCzAJBgNVBAgTAlJTMRUwEwYDVQQHFAxwb3J0byBhbGVncmUxEzARBgNVBAoUCklDUC1CcmFzaWwxKjAoBgNVBAsUIVNlY3JldGFyaWEgZGEgUmVjZWl0YSBGZWRlcmFsLVNSRjETMBEGA1UECxQKU1JGIGUtQ05QSjEgMB4GA1UEAxMXVU5JNSBTIEE6MDM5NzY2MTkwMDAxMjQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMcRsWCrF9AAhau86hMNh6SgIdPeA3sdQjSLUdt2QprOfgzX3BDc9OhUWvRnbTnpgPvFuvZMjnWoBcrLl6/6hsuVsXigNK9oT2V6iPxfkJ8j4sNo+hu3ociclzN6GhhFQ4W9iqK1+iJgL8xTh/MJuB5fBjCw1J2oObR/YyGJpHrJAgMBAAGjggICMIIB/jCBqwYDVR0RBIGjMIGgoD0GBWBMAQMEoDQEMjE5MTExOTc3ODAxMjE0MzgwMTUwMDAwMDAwMDAwMDAwMDAwMTUxNDE2NTM1MkNOSFJToBsGBWBMAQMCoBIEEEVCTEVOIEtBTElMIE5FVE+gGQYFYEwBAwOgEAQOMDM5NzY2MTkwMDAxMjSgFwYFYEwBAwegDgQMMDAwMDAwMDAwMDAwgQ5lYmxlbkB1bmk1LmNvbTAJBgNVHRMEAjAAMGIGA1UdHwRbMFkwV6BVoFOGUWh0dHA6Ly9pY3AtYnJhc2lsLmNlcnRpc2lnbi5jb20uYnIvcmVwb3NpdG9yaW8vbGNyL0FDQ2VydGlTaWduU1JGVjMvTGF0ZXN0Q1JMLmNybDAfBgNVHSMEGDAWgBT2nVld/r/Fcs3dzsQuZhsu7gjPdjAOBgNVHQ8BAf8EBAMCBeAwVQYDVR0gBE4wTDBKBgZgTAECAQwwQDA+BggrBgEFBQcCARYyaHR0cDovL2ljcC1icmFzaWwuY2VydGlzaWduLmNvbS5ici9yZXBvc2l0b3Jpby9kcGMwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMCMDgGCCsGAQUFBwEBBCwwKjAoBggrBgEFBQcwAYYcaHR0cDovL29jc3AuY2VydGlzaWduLmNvbS5icjANBgkqhkiG9w0BAQUFAAOCAQEABl0Zs37I0070uNijZVzFdb8BWmB2vrcaXgqNh9J7fXQXEX6FcBo871OAL4FWd4+r9LKZD7YCJtCr9uNvh4dzgxqXNYTdD32LkTOlF8tuiWcR5IctjSRBFWT5ydwL3700PuX3E5UQfnozR6tw9uHfOY1pDOmG8MqicLbbj6PCqoYjcsM+BzziRRriFS6Tgo+OYueIsvQsxvHriaq8yA+sSX3xNGi6aE8J+4dcX0gsRKnXrI0XD2qXowIaTN8TXh8LVhjVoA6q0ACM/rmjeGyIcIK56KI1d5zCxh8zq88fJBF+Ph1MA8erfkAjKr/GYP0n/y9+9TQeAx73feZT2eGT5w==&lt;/X509Certificate&gt;
                &lt;/X509Data&gt;
            &lt;/KeyInfo&gt;
        &lt;/Signature&gt;
    &lt;/NFe&gt;
&lt;/enviNFe&gt;

1 Resposta

F

Eu conheço e usei o JAXB. Se tu tiver o XSD, ele compila pra ti e gera todas as classes Java em forma de Java Beans, para ti manipular as tags através de métodos set e get. Ou seja, faz toda a conversão do XML -> Java.

Depois que tu populou todos os atributos que desejava das classes geradas, é só fazer a conversão Java -> XML novamente. Apesar de encontrar um pouco de dificuldades no inicio por não conhecer o JAXB, agora acho moleza trabalhar com ele. Acho que vale a pena dar uma olhada.

Se tiver a fim de conhecer, segue um bom link de como fazer as conversões:
http://www.onjava.com/pub/a/onjava/2004/12/15/jaxb.html

Obs: Apesar de ter lido sobre o XStream, não trabalhei com ele.
:thumbup:

Criado 12 de julho de 2008
Ultima resposta 12 de jul. de 2008
Respostas 1
Participantes 2