Ricardo_H 0 Denunciar post Postado Agosto 17, 2010 Olá Senhores e Senhoritas, Seguinte.....to numa tarefa meia missão impossível (pra mim).....minha aplicação recebe um XML via post de uma outra página, quanto à isso num é problema, passo esse XML via flashVars em Base64 para a aplicação Flex....até aí...tuuuudo beleza... Agora o bicho pega.....seguinte não consigo ler o xml nem a pau via Descendants...já tentei de tudo....o unico jeito que consegui ler o XML foi via children, só que desse jeito não me atende, pois tenho que prever todos os campos do XML da NFe. Preciso saber como ler este XML com descendants. Abaixo segue o XML que estou utilizando pra testar. <?xml version='1.0' encoding='utf-8'?> <NFe xmlns="http://www.portalfiscal.inf.br/nfe"> <infNFe Id="NFe35100549911589000179551240000000110000000119" versao="1.10"> <ide> <cUF>35</cUF> <cNF>000000011</cNF> <natOp>VENDAS</natOp> <indPag>0</indPag> <mod>55</mod> <serie>124</serie> <nNF>11</nNF> <dEmi>2010-05-11</dEmi> <dSaiEnt>2010-05-11</dSaiEnt> <tpNF>1</tpNF> <cMunFG>3511102</cMunFG> <tpImp>1</tpImp> <tpEmis>1</tpEmis> <cDV>9</cDV> <tpAmb>2</tpAmb> <finNFe>1</finNFe> <procEmi>0</procEmi> <verProc>FaturadorWeb</verProc> </ide> <emit> <CNPJ>11111111111111</CNPJ> <xNome>Emissor</xNome> <xFant>EMISSOR DE NF-e</xFant> <enderEmit> <xLgr>FAZENDA SANTO ANTONIO</xLgr> <nro>9</nro> <xBairro>CENTRO</xBairro> <cMun>3511102</cMun> <xMun>CATANDUVA</xMun> <UF>SP</UF> <cPais>1058</cPais> <xPais>BRASIL</xPais> </enderEmit> <IE>11111111111</IE> </emit> <dest> <CNPJ>33333333333333</CNPJ> <xNome>FATURADOR WEB [DESTINATARIO]</xNome> <enderDest> <xLgr>FAZENDA</xLgr> <nro>9</nro> <xBairro>JARDIM</xBairro> <cMun>3503703</cMun> <xMun>ARIRANHA</xMun> <UF>SP</UF> <CEP>12345678</CEP> <cPais>1058</cPais> <xPais>BRASIL</xPais> </enderDest> <IE>44444444444</IE> </dest> <det nItem="1"> <prod> <cProd>001</cProd> <cEAN></cEAN> <xProd>Desenvolvimento de aplicacoes Web</xProd> <CFOP>7949</CFOP> <uCom>1</uCom> <qCom>45.0000</qCom> <vUnCom>23.0000</vUnCom> <vProd>1035.00</vProd> <cEANTrib></cEANTrib> <uTrib>1</uTrib> <qTrib>45.0000</qTrib> <vUnTrib>23.0000</vUnTrib> </prod> <imposto> <ICMS> <ICMS40> <orig>0</orig> <CST>40</CST> </ICMS40> </ICMS> <PIS> <PISNT> <CST>07</CST> </PISNT> </PIS> <COFINS> <COFINSNT> <CST>07</CST> </COFINSNT> </COFINS> </imposto> </det> <total> <ICMSTot> <vBC>0.00</vBC> <vICMS>0.00</vICMS> <vBCST>0.00</vBCST> <vST>0.00</vST> <vProd>0.00</vProd> <vFrete>0.00</vFrete> <vSeg>0.00</vSeg> <vDesc>0.00</vDesc> <vII>0.00</vII> <vIPI>0.00</vIPI> <vPIS>0.00</vPIS> <vCOFINS>0.00</vCOFINS> <vOutro>0.00</vOutro> <vNF>1035.00</vNF> </ICMSTot> <ISSQNtot></ISSQNtot> <retTrib></retTrib> </total> <transp> <modFrete>0</modFrete> <transporta> <CNPJ>99999999999999</CNPJ> <xNome>Transportador</xNome> <IE>88888888888</IE> <xEnder>AV. ABC</xEnder> <xMun>OSASCO</xMun> <UF>SP</UF> </transporta> </transp> <cobr> <fat></fat> </cobr> </infNFe> </NFe> Por favor me ajudem.... Grato à disponibilidade e espaço pra gente pedir socorrrrroooooo..... []'s........... Compartilhar este post Link para o post Compartilhar em outros sites
Foxn 3 Denunciar post Postado Agosto 21, 2010 Veja bem, você está trabalhando com AS2 e infelizmente trabalhar com XML nesta versão é um verdadeiro castigo, ainda bem que no AS3 não temos de passar mais por essa tortura. Eu não sei se o Flex tem um jeito fácil de fazer isso e caso não tenha você vai precisar converter para um objeto na marra: var url:String = "dados.xml"; var xml:XML = new XML(); var final:Object; xml.ignoreWhite = true; xml.onLoad = function($sucesso:Boolean):Void { final = TratarXml(this.firstChild); } var ler:LoadVars = new LoadVars(); ler.sendAndLoad(url,xml); var TratarXml:Function = function($xml) { var $retorno:Object = new Object(); var $nome:String = $xml.nodeName; if($nome == null) { return $xml.nodeValue; } else { $retorno[$nome] = new Object(); for(var $i=0; $i < $xml.childNodes.length; $i++) { $retorno[$nome][$i] = TratarXml($xml.childNodes[$i]) } } return $retorno; } Esta é uma função geral, agora você precisa criar uma regra para definir algumas exceções na hora de converter um elemento com acesso a seu valor diretamente e não por um objeto de incide 0. Att, Compartilhar este post Link para o post Compartilhar em outros sites