Xstream

10 respostas
R

bom dia pessoal....

to com um probleminha em xstream aqui....
estou fazendo um aplicativo que lê um .xml fornecido por outro aplicativo... tenho q criar uma lista de uma determinada tag, pois ela aparece n vezes no .xml, até ai blz... só que está tag que eu tive que criar a lista possui outras tags filhas... ai ta dando o seguinte erro...

Exception in thread "main" com.thoughtworks.xstream.converters.ConversionException: Element prod of type entity.prod is not defined as field in type java.lang.Object
---- Debugging information ----
class               : entity.NFe
required-type       : java.lang.Object
path                : /NFe/infNFe/det/prod
line number         : 1
-------------------------------
        at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.writeValueToImplicitCollection(AbstractReflectionConverter.java:283)
        at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:236)
        at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:162)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
        at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:60)
        at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:225)
        at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:162)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
        at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
        at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:246)
        at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:218)
        at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflection
Converter.java:162)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
        at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:60)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:137)
        at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:33)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:923)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:909)
        at com.thoughtworks.xstream.XStream.fromXML(XStream.java:853)
        at DAO.LerXML.leXML(LerXML.java:24)
        at DAO.EdNFe.main(EdNFe.java:11)
Java Result: 1

a estrutura do meu xml até onde da o erro é a seguinte.... a tag que eu criei a lista é a , dentro dela eu tenho outras tags...

<?xml version="1.0" encoding="utf-8" ?> 
- <NFe xmlns="http://www.portalfiscal.inf.br/nfe">
- <infNFe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Id="NFe31090125338930000180550000000003720000396099" versao="1.10">
+ <ide>
  <cUF>31</cUF> 
  <cNF>000039609</cNF> 
  <natOp>VENDAS ESTADUAIS</natOp> 
  <indPag>0</indPag> 
  <mod>55</mod> 
  <serie>0</serie> 
  <nNF>372</nNF> 
  <dEmi>2009-01-22</dEmi> 
  <dSaiEnt>2009-01-22</dSaiEnt> 
  <tpNF>1</tpNF> 
  <cMunFG>0000000</cMunFG> 
  <tpImp>1</tpImp> 
  <tpEmis>1</tpEmis> 
  <cDV>9</cDV> 
  <tpAmb>2</tpAmb> 
  <finNFe>1</finNFe> 
  <procEmi>0</procEmi> 
  <verProc>1.10</verProc> 
  </ide>
+ <emit>
  <CNPJ>25338930000180</CNPJ> 
  <xNome>CASA AGRICOLA COMERCIO LTDA</xNome> 
  <xFant>CASA AGRICOLA</xFant> 
- <enderEmit>
  <xLgr>R ARTIMENIO PIVA TONELLI</xLgr> 
  <nro>90</nro> 
  <xBairro>VILA LICINIO</xBairro> 
  <cMun>3126109</cMun> 
  <xMun>FORMIGA</xMun> 
  <UF>MG</UF> 
  <CEP>35570000</CEP> 
  <cPais>1058</cPais> 
  <xPais>BRASIL</xPais> 
  <fone>[telefone removido]</fone> 
  </enderEmit>
  <IE>2615324490001</IE> 
  </emit>
+ <dest>
  <xNome>ACCUSHOP COMERCIAL DE MATERIAIS</xNome> 
- <enderDest>
  <xLgr>RUA PADRE REMACLO FOXIUS, 329</xLgr> 
  <nro>, 329</nro> 
  <xBairro>CENTENARIO</xBairro> 
  <cMun>3126109</cMun> 
  <xMun>FORMIGA</xMun> 
  <UF>MG</UF> 
  <CEP>35570000</CEP> 
  <cPais>1058</cPais> 
  <xPais>BRASIL</xPais> 
  </enderDest>
  <IE /> 
  </dest>
- <det nItem="1">
- <prod>
  <cProd>00001</cProd> 
  <cEAN>0000000000017</cEAN> 
  <xProd>Produto 1</xProd> 
  <CFOP>5102</CFOP> 
  <uCom>FR</uCom> 
  <qCom>1.0000</qCom> 
  <vUnCom>200.0000</vUnCom> 
  <vProd>200.00</vProd> 
  <cEANTrib /> 
  <uTrib>0</uTrib> 
  <qTrib>0.0000</qTrib> 
  <vUnTrib>0.0000</vUnTrib> 
  </prod>
- <imposto>
- <ICMS>
- <ICMS00>
  <orig>0</orig> 
  <CST>00</CST> 
  <modBC>0</modBC> 
  <vBC>200.00</vBC> 
  <pICMS>18.00</pICMS> 
  <vICMS>36.00</vICMS> 
  </ICMS00>
  </ICMS>
- <PIS>
- <PISNT>
  <CST>06</CST> 
  </PISNT>
  </PIS>
- <COFINS>
- <COFINSNT>
  <CST>06</CST> 
  </COFINSNT>
  </COFINS>
  </imposto>
  </det>
- <det nItem="2">
- <prod>
  <cProd>00002</cProd> 
  <cEAN>0000000000024</cEAN> 
  <xProd>produto 2</xProd> 
  <CFOP>5102</CFOP> 
  <uCom>FR</uCom> 
  <qCom>1.0000</qCom> 
  <vUnCom>300.0000</vUnCom> 
  <vProd>300.00</vProd> 
  <cEANTrib /> 
  <uTrib>0</uTrib> 
  <qTrib>0.0000</qTrib> 
  <vUnTrib>0.0000</vUnTrib> 
  </prod>
- <imposto>
- <ICMS>
- <ICMS60>
  <orig>0</orig> 
  <CST>60</CST> 
  <vBCST>0.00</vBCST> 
  <vICMSST>0.00</vICMSST> 
  </ICMS60>
  </ICMS>
- <PIS>
- <PISNT>
  <CST>06</CST> 
  </PISNT>
  </PIS>
- <COFINS>
- <COFINSNT>
  <CST>06</CST> 
  </COFINSNT>
  </COFINS>
  </imposto>
  </det>

se alguem puder me dar um help ai....

vlw....

10 Respostas

C

Posta aí como vc tá fazendo…

R
XStream xstream = new XStream();   
        xstream.addImplicitCollection(infNFe.class, "det");
        setAlias(xstream);    


 try {

            NFe nota = (NFe) xstream.fromXML(new FileReader(new File(nomeArq)));
 infNFe infnfe = nota.getInfNFeIdinfNFe();
 List Det = infnfe.getContent();

     det det = (det) Det.get(y);
            imposto impost = det.getImpostoIdimposto();
            COFINS cofins = impost.getCOFINS();
            COFINSQtde cofinsqtde = cofins.getCOFINSQtdeidCOFINSQtde();
            COFINSNT cofinsnt = cofins.getCOFINSNTidCOFINSNT();
            COFINSOutr cofinsoutr = cofins.getCOFINSOutridCOFINSOutr();
            COFINSAliq cofinsaliq = cofins.getCOFINSAliqidCOFINSAliq();
            ISSQN issqn = impost.getISSQNidISSQN();
            ICMS icms = impost.getICMSidICMS();
            ICMS00 icms00 = icms.getICMS00idICMS00();
            ICMS10 icms10 = icms.getICMS10idICMS10();
            ICMS20 icms20 = icms.getICMS20idICMS20();
            ICMS30 icms30 = icms.getICMS30idICMS30();
            ICMS40 icms40 = icms.getICMS40idICMS40();
            ICMS51 icms51 = icms.getICMS51idICMS51();
            ICMS60 icms60 = icms.getICMS60idICMS60();
            ICMS70 icms70 = icms.getICMS70idICMS70();
            ICMS90 icms90 = icms.getICMS90idICMS90();
            PISST pisst = impost.getPISSTidPISST();
            COFINSST cofinsst = impost.getCOFINSSTidCOFINSST();
            PIS pis = impost.getPISidPIS();
            PISAliq pisaliq = pis.getPISAliqidPISAliq();
            PISNT pisnt = pis.getPISNTidPISNT();
            PISQtde pisqtde = pis.getPISQtde();
            IPI ipi = impost.getIPIidIPI();
            prod prod = det.getProdidProd();
            comb comb = prod.getCombidComb();

            for (int x = 0; x < Det.lastIndexOf(det); x++) {
                if (ipi != null) {
                    IPIDAO ipidao = new IPIDAO();
                    ipidao.salvar(ipi, j);
                    IPITrib ipitrib = ipi.getIPITribidIPITrib();
                    IPINT ipint = ipi.getIPINTidIPINT();
                    if (ipint != null) {
                        IPINTDAO ipintdao = new IPINTDAO();
                        ipintdao.salvar(ipint, j);
                    }

                    if (ipitrib != null) {
                        IPITribDAO ipitribdao = new IPITribDAO();
                        ipitribdao.salvar(ipitrib, j);
                    }
                }
                II ii = impost.getIIidII();
                if (comb != null) {
                    ICMSCons icmscons = comb.getICMSConsidICMSCons();
                    ICMSInter icmsinter = comb.getICMSInteridICMSInter();
                    CIDE cide = comb.getCIDEidCIDE();
                    ICMSComb icmscomb = comb.getICMScombidICMSComb();

                    if (icmscons != null) {
                        ICMSConsDAO icmsconsdao = new ICMSConsDAO();
                        icmsconsdao.salvar(icmscons, j);
                    }

                    if (icmsinter != null) {
                        ICMSInterDAO icmsinterdao = new ICMSInterDAO();
                        icmsinterdao.salvar(icmsinter, j);
                    }

                    if (cide != null) {
                        CIDEDAO cidedao = new CIDEDAO();
                        cidedao.salvar(cide, j);
                    }

                    if (icmscomb != null) {
                        ICMSCombDAO icmscombdao = new ICMSCombDAO();
                        icmscombdao.salvar(icmscomb, j);
                    }
                }

                arma arma = prod.getArmaIdarma();
                if (arma != null) {
                    armaDAO armadao = new armaDAO();
                    armadao.salvar(arma, j);
                }

                med med = prod.getMedIdmed();
                if (med != null) {
                    medDAO meddao = new medDAO();
                    meddao.salvar(med, j);
                }

                DI di = prod.getDIidDI();
                if (di != null) {
                    adi adi = di.getAdiIdadi();
                    if (adi != null) {
                        adiDAO adidao = new adiDAO();
                        adidao.salvar(adi, j);
                    }
                    DIDAO didao = new DIDAO();
                    didao.salvar(di, j);
                }

                veicProd veicprod = prod.getVeicProdidveicProd();
                if (veicprod != null) {
                    veicProdDAO veicproddao = new veicProdDAO();
                    veicproddao.salvar(veicprod, j);
                }

                if (comb != null) {
                    combDAO combdao = new combDAO();
                    combdao.salvar(comb, j);
                }

                prodDAO proddao = new prodDAO();
                proddao.salvar(prod, j);

                if (ii != null) {
                    IIDAO iidao = new IIDAO();
                    iidao.salvar(ii, j);
                }

                if (pisnt != null) {
                    PISNTDAO pisntdao = new PISNTDAO();
                    pisntdao.salvar(pisnt, j);
                }

                if (pisaliq != null) {
                    PISAliqDAO pisaliqdao = new PISAliqDAO();
                    pisaliqdao.salvar(pisaliq, j);
                }

                if (pisqtde != null) {
                    PISQtdeDAO pisqtdedao = new PISQtdeDAO();
                    pisqtdedao.salvar(pisqtde, j);
                }

                PISDAO pisdao = new PISDAO();
                pisdao.salvar(pis, j);

                if (cofinsst != null) {
                    COFINSSTDAO cofinsstdao = new COFINSSTDAO();
                    cofinsstdao.salvar(cofinsst, j);
                }

                if (pisst != null) {
                    PISSTDAO pisstdao = new PISSTDAO();
                    pisstdao.salvar(pisst, j);
                }

                if (icms90 != null) {
                    ICMS90DAO icms90dao = new ICMS90DAO();
                    icms90dao.salvar(icms90, j);
                }

                if (icms70 != null) {
                    ICMS70DAO icms70dao = new ICMS70DAO();
                    icms70dao.salvar(icms70, j);
                }

                if (icms60 != null) {
                    ICMS60DAO icms60dao = new ICMS60DAO();
                    icms60dao.salvar(icms60, j);
                }

                if (icms51 != null) {
                    ICMS51DAO icms51dao = new ICMS51DAO();
                    icms51dao.salvar(icms51, j);
                }

                if (icms40 != null) {
                    ICMS40DAO icms40dao = new ICMS40DAO();
                    icms40dao.salvar(icms40, j);
                }

                if (icms30 != null) {
                    ICMS30DAO icms30dao = new ICMS30DAO();
                    icms30dao.salvar(icms30, j);
                }

                if (icms20 != null) {
                    ICMS20DAO icms20dao = new ICMS20DAO();
                    icms20dao.salvar(icms20, j);
                }

                if (icms10 != null) {
                    ICMS10DAO icms10dao = new ICMS10DAO();
                    icms10dao.salvar(icms10, j);
                }

                if (icms00 != null) {
                    ICMS00DAO icms00dao = new ICMS00DAO();
                    icms00dao.salvar(icms00, j);
                }

                ICMSDAO icmsdao = new ICMSDAO();
                icmsdao.salvar(icms, j);

                if (issqn != null) {
                    ISSQNDAO issqndao = new ISSQNDAO();
                    issqndao.salvar(issqn, j);
                }

                if (cofinsaliq != null) {
                    COFINSAliqDAO cofinsaliqdao = new COFINSAliqDAO();
                    cofinsaliqdao.salvar(cofinsaliq, j);
                }

                if (cofinsoutr != null) {
                    COFINSOutrDAO cofinsoutrdao = new COFINSOutrDAO();
                    cofinsoutrdao.salvar(cofinsoutr, j);
                }

                if (cofinsnt != null) {
                    COFINSNTDAO cofinsntdao = new COFINSNTDAO();
                    cofinsntdao.salvar(cofinsnt, j);
                }

                if (cofinsqtde != null) {
                    COFINSQtdeDAO cofinsqtdedao = new COFINSQtdeDAO();
                    cofinsqtdedao.salvar(cofinsqtde, j);
                }

                COFINSDAO cofinsdao = new COFINSDAO();
                cofinsdao.salvar(cofins, j);

                impostoDAO impostodao = new impostoDAO();
                impostodao.salvar(impost, j);

                detDAO detdao = new detDAO();
                detdao.salvar(det, j);
            }

    
 public void setAlias(XStream xstream) {        
        xstream.alias("NFe", NFe.class);
        xstream.alias("CIDE", CIDE.class);
        xstream.alias("COFINS", COFINS.class);
        xstream.alias("COFINSAliq", COFINSAliq.class);
        xstream.alias("COFINSNT", COFINSNT.class);
        xstream.alias("COFINSOutr", COFINSOutrDAO.class);
        xstream.alias("COFINSQtde", COFINSQtde.class);
        xstream.alias("COFINSST", COFINSST.class);
        xstream.alias("DI", DI.class);
        xstream.alias("ICMS", ICMS.class);
        xstream.alias("ICMS00", ICMS00.class);
        xstream.alias("ICMS10", ICMS10.class);
        xstream.alias("ICMS20", ICMS20.class);
        xstream.alias("ICMS30", ICMS30.class);
        xstream.alias("ICMS40", ICMS40.class);
        xstream.alias("ICMS51", ICMS51.class);
        xstream.alias("ICMS60", ICMS60.class);
        xstream.alias("ICMS70", ICMS70.class);
        xstream.alias("ICMS90", ICMS90.class);
        xstream.alias("ICMSComb", ICMSComb.class);
        xstream.alias("ICMSCons", ICMSCons.class);
        xstream.alias("ICMSInter", ICMSInter.class);
        xstream.alias("ICMSTot", ICMSTot.class);
        xstream.alias("II", II.class);
        xstream.alias("IPI", IPI.class);
        xstream.alias("IPINT", IPINT.class);
        xstream.alias("IPITrib", IPITrib.class);
        xstream.alias("ISSQN", ISSQN.class);
        xstream.alias("ISSQNtot", ISSQNtot.class);
        xstream.alias("infNFe", infNFe.class);
        xstream.alias("NFe", NFe.class);
        xstream.alias("NFref", NFref.class);
        xstream.alias("PIS", PIS.class);
        xstream.alias("PISAliq", PISAliq.class);
        xstream.alias("PISNT", PISNT.class);
        xstream.alias("PISOutr", PISOutr.class);
        xstream.alias("PISQtde", PISQtde.class);
        xstream.alias("PISST", PISST.class);
        xstream.alias("Signature", Signature.class);
        xstream.alias("adi", adi.class);
        xstream.alias("arma", arma.class);
        xstream.alias("avulsa", avulsa.class);
        xstream.alias("cobr", cobr.class);
        xstream.alias("comb", comb.class);
        xstream.alias("compra", compra.class);
        xstream.alias("dest", dest.class);
        xstream.alias("det", det.class);
        xstream.aliasAttribute(det.class, "nItem", "nItem");
        xstream.alias("prod", prod.class);
        xstream.alias("dup", dup.class);
        xstream.alias("emit", emit.class);
        xstream.alias("enderDest", enderDest.class);
        xstream.alias("enderEmit", enderEmit.class);
        xstream.alias("entrega", entrega.class);
        xstream.alias("exporta", exporta.class);
        xstream.alias("fat", fat.class);
        xstream.alias("ide", ide.class);
        xstream.alias("imposto", imposto.class);
        xstream.alias("infAdic", infAdic.class);
        xstream.alias("lacres", lacres.class);
        xstream.alias("med", med.class);
        xstream.alias("obsCont", obsCont.class);
        xstream.alias("obsFisco", obsFisco.class);
        xstream.alias("procRef", procRef.class);        
        xstream.alias("reboque", reboque.class);
        xstream.alias("refNF", refNF.class);
        xstream.alias("retTransp", retTransp.class);
        xstream.alias("retTrib", retTrib.class);
        xstream.alias("retirada", retirada.class);
        xstream.alias("total", total.class);
        xstream.alias("transp", transp.class);
        xstream.alias("transporta", transporta.class);
        xstream.alias("veicProd", veicProd.class);
        xstream.alias("veicTransp", veicTransp.class);
        xstream.alias("vol", vol.class);
    }

essa é a parte que ta dando pau...

qdo nao preciso da lista de det... com apenas um tag o programa funciona blz... porém não é o que eu preciso...

E

Olha, trabalhei faz algum tempo com XSTREAM, e nessa epoca não podia usar atributos no XML, como em .
Será que esse é o problema?

Abraços.

R

acredito que não seja… pois quando uso a instrução

xstream.aliasAttribute(det.class, "nItem", "nItem");

ele me retorna o valor do atibuto direitinho… estou usando a ultima versão de xstream…

R

alguém???

F

prod prod = det.getProdidProd(); comb comb = prod.getCombidComb();
:shock:
Da uma olhada nestas duas Linhas!!!
A espectativa seria ver um código + ou - assim:

MyClassProd prod = det.getProdidProd(); MyClassComb comb = prod.getCombidComb();

Verifique, talvez seja esse o problema.

flws

R

nada a ver não… prod é o nome da minha classe…

N

sem as classes fica complicado te dizer!

passa as classes ai que eu rodo aki e te passo oq que está errado!

R

todas as classes estao ai no pacotão…

N

eu mudei esta linha!!
de xstream.alias(“COFINSOutr”, COFINSOutrDAO.class); para xstream.alias(“COFINSOutr”, COFINSOutr.class);

e na classe prod tive que adicionar o campo genero e consegui importar o um xml de nfe que eu tinha aki!

o xml que vc postou tópico não está completo!

bom a parte do xstream está ok com estas mudanças!

Criado 26 de fevereiro de 2009
Ultima resposta 27 de fev. de 2009
Respostas 10
Participantes 5