Gente, o XML não pode estar na aplicação, ele tem que ser externo para ser alterado posteriormente com mais netos, eu usei httpservices para buscar o xml externo e ficou assim:
[Bindable] private var XMLTree:XML; private function init():void { var request:URLLoader = new URLLoader(); request.addEventListener(Event.COMPLETE, setXML); request.load(new URLRequest("../assets/Content.xml")); } public function setXML(e:Event):void { XMLTree = new XML(e.target.data); } e populei os combos que preciso assim: <s:DropDownList id="drop1" labelField="@label"> <s:dataProvider> <s:XMLListCollection source="{XMLTree.noinicial}"/> </s:dataProvider> </s:DropDownList> porque o DropDownlis so aceita "xlist" e o resultado do urlrequest não é "xlist" por isso usei desta forma ate então esta parte esta funcionando, os meu combos estão todos sendo preenchidos, quando seleciono o ultimo combo ele deveria passar o valor do item combo selecionado mais o item da frente que não esta funcionando, o tree esta assim: <mx:Tree id="tree" dataProvider="drop1*.selectedItem.nofilhos" <!-- *Aqui no caso vai o ultimo combo--> labelField="@label" /> nesta tree deveria aparecer os filhos com seus filhos <-(netos no caso), entenderam. On Dec 22, 8:02 am, Rogerio Gonzalez <rogerio.gonza...@gmail.com> wrote: > boa Luis, > > se redimiu! > > hehehehe :P > > Abraços > > Rogério > > 2011/12/21 Luis Eduardo <ledua...@suprasis.com.br> > > > > > > > > > > > Agora é ooooooutra coisa! hehe > > > Tá bom Rogério, só pq vc falou que eu estou pegando pesado segue um > > código prontinho que resolve o que eu entendi do problema. > > Carolina, veja se realmente é isso mesmo. > > > (De qualquer forma dê uma lida nos links que te passei pra manipulação > > com E4X pq isso vai te ajudar um tanto quando lidar com XML.) > > > Fico no aguardo pra saber fechou. > > > abraços, > > - Luís > > > ----------------------------<?**xml version="1.0" encoding="utf-8"?> > > <s:Application > > xmlns:fx="http://ns.adobe.com/**mxml/2009<http://ns.adobe.com/mxml/2009> > > " > > > > xmlns:s="library://ns.adobe.**com/flex/spark<http://ns.adobe.com/flex/spark> > > " > > > > xmlns:mx="library://ns.adobe.**com/flex/mx<http://ns.adobe.com/flex/mx>" > > minWidth="955" minHeight="600"> > > <fx:Declarations> > > <s:XMLListCollection id="xmllcCombo" source="{xmll.noinicial}"/> > > <s:XMLListCollection id="xmllcTree"/> > > <fx:XMLList id="xmll"> > > > <content> > > <noinicial label="primeiro no"> > > <nofilho label="filho1"> > > <noneto label="neto1.1"/> > > <noneto label="neto1.2"/> > > <noneto label="neto1.3"/> > > </nofilho> > > </noinicial> > > <noinicial label="segundo no"> > > > <nofilho label="filho2.1"> > > <noneto label="neto2.1"/> > > <noneto label="neto2.2"/> > > <noneto label="neto2.3"/> > > </nofilho> > > </noinicial> > > </content> > > </fx:XMLList> > > </fx:Declarations> > > <fx:Script> > > <![CDATA[ > > import mx.collections.**XMLListCollection; > > import spark.events.IndexChangeEvent; > > > protected function mudaTree(event:**IndexChangeEvent):void { > > var cb:ComboBox = event.currentTarget as ComboBox; > > var xmltemp:XML = XML(cb.selectedItem).copy(); > > > xmllcTree.removeAll(); > > xmllcTree.source = xmltemp.nofilho; > > } > > > ]]> > > </fx:Script> > > > <s:ComboBox x="100" y="100" change="mudaTree(event)" > > dataProvider="{xmllcCombo}" prompt="Selecione..." labelField="@label"/> > > <mx:Tree id="secoia" x="100" y="200" width="300" height="400" > > dataProvider="{xmllcTree}" labelField="@label" /> > > </s:Application> > > ------------------------------**------------------------------** > > ------------------------------**------- > > > Em 21/12/2011 15:59, Carolina Duval escreveu: > > > Na vardade, obter o xml externo eu consigo, tanto com httpservices ou > >> com URLoader > >> e consigo colocar seus valores dentro do combobox, o que não consigo é > >> pegar o filtro > >> que estou fazendo com o combobox para acessar o nó especifico do xml; > >> Exemplo: > > >> Tenho esse xml a titulo de exemplo > > >> <content> > >> <noinicial label="primeiro no"> > >> <nofilho label="filho1"> > >> <noneto label="neto1.1"/> > >> <noneto label="neto1.2"/> > >> <noneto label="neto1.3"/> > >> </nofilho> > >> </noinicial> > >> <noinicia label="segundo no"> > >> <nofilho label="filho2.1"> > >> <noneto label="neto2.1"/> > >> <noneto label="neto2.2"/> > >> <noneto label="neto2.3"/> > >> </nofilho> > >> </noinicial> > >> </content> > > >> no combobox eu escolho qual o nó inicial, > >> ai então carrega a tree com a pasta filho e os nos netos. > > >> estou carregando o xml assim: > > >> [Bindable] > >> private var XMLTree:XML; > > >> private function init():void > >> { > >> var request:URLLoader = new URLLoader(); > >> request.addEventListener(**Event.COMPLETE, > >> setXML); > >> request.load(new URLRequest("../assets/Content.** > >> xml")); > >> } > > >> public function setXML(e:Event):void > >> { > >> XMLTree = new XML(e.target.data); > > >> } > > >> ai no combo coloco o dataprovider > >> <s:dataProvider> > >> <s:XMLListCollection source="{XMLTree.noinicial}"/> > >> </s:dataProvider> > >> no proximo combo coloco > >> <s:dataProvider> > >> <s:XMLListCollection source="{ID_combo1.**selectedItem.nofilho}"/> > >> </s:dataProvider> > >> os labelField estão @label ate então OK > > >> mas na hora de popular a tree com o resultado dos combos é que esta > >> com problema > >> pois não esta aceitando ID_combo.selectedItem.noneto. > > >> este é o problema. > > >> Obrigado Rogerio e Luiz > > >> On Dec 21, 4:32 pm, Rogerio > >> Gonzalez<rogerio.gonza...@**gmail.com<rogerio.gonza...@gmail.com> > > >> wrote: > > >>> Poxa Luis, > > >>> Dá uma folga pra Carolina. A maior parte dos cursos considera E4X como > >>> "Advanced" hehehe. > > >>> Sobre a carga de arquivos externos, vc pode usar o httpservice com o > >>> resultFormat setado como object. > >>> Desta forma, o seu XML externo já vai ser carregado no httpservice e vc > >>> poderá acessá-lo como um objecto as3 normal, usando o lastResult. > > >>> Acredito q deva ter algum exemplo na documentacao usando tree com object > >>> vindo de um httpservice. > > >>> Agora, se vc realmente quer usar XML no flex, ai o caminho é E4X mesmo. > > >>> Abraços > > >>> Rogério Gonzalez > > >>> 2011/12/21 Luis > >>> Eduardo<ledua...@suprasis.com.**br<ledua...@suprasis.com.br> > > >>> Carolina, > >>>> Você está fazendo duas coisas erradas ao mesmo tempo: > >>>> 1) Não gastou um tempinho pra estudar direito como funciona E4X no > >>>> actionscript > >>>> 2) Sua pergunta está genérica demais. > >>>> Recomendo tentar de novo primeiro passando pelo item 1 e depois pelo > >>>> 2. > >>>> Para o item 1, um bom ponto de partida são esses dois links: > >>>> > >>>> http://livedocs.adobe.com/****flex/3/html/help.html?content=****<http://livedocs.adobe.com/**flex/3/html/help.html?content=**> > >>>> 13_Working_with_XML_03.html<ht**tp://livedocs.adobe.com/flex/** > >>>> 3/html/help.html?content=13_**Working_wi..<http://livedocs.adobe.com/flex/3/html/help.html?content=13_Working_wi..> > >>>> .> > >>>> http://www.flexao.net/2009/06/****manipulando-xml-no-flex-com-** > >>>> **e4x.html<http://www.flexao.net/2009/06/**manipulando-xml-no-flex-com-**e4x.html> > >>>> <http://www.flexao.**net/2009/06/manipulando-xml-**no-flex-com-e4x.html<http://www.flexao.net/2009/06/manipulando-xml-no-flex-com-e4x.html> > > >>>> Para o item 2, um pouco de código-fonte já ajuda bastante pra gente > >>>> entender melhor onde foi que vc teve dificuldade. > >>>> É que existem varias maneiras de acessar um xml externo e várias > >>>> maneiras de mostrá-lo. > >>>> abraços, > >>>> - Luís Eduardo. > >>>> Em 21/12/2011 12:27, Carolina Duval escreveu: > >>>> Alguém sabe como acessar um xml externo e colocar um no especifico > > >>>>> para mostrar no tree. > > >>>> -- > >>>> Você recebeu esta mensagem porque está inscrito na lista "flexdev" > >>>> Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com > >>>> Para sair da lista, envie um email em branco para flexdev-unsubscribe@ > >>>> ** > >>>> googlegroups.com<flexdev-**unsubscr...@googlegroups.com<flexdev-unsubscribe > >>>> @googlegroups.com> > > >>>> Mais opções estão disponíveis emhttp://groups.google.com/**** > >>>> group/flexdev <http://groups.google.com/**group/flexdev><http://groups. > >>>> **google.com/group/flexdev <http://groups.google.com/group/flexdev>> > > > -- > > Você recebeu esta mensagem porque está inscrito na lista "flexdev" > > Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com > > Para sair da lista, envie um email em branco para flexdev-unsubscribe@** > > googlegroups.com <flexdev-unsubscr...@googlegroups.com> > > Mais opções estão disponíveis > > emhttp://groups.google.com/**group/flexdev<http://groups.google.com/group/flexdev> -- Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com Para sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.com Mais opções estão disponíveis em http://groups.google.com/group/flexdev