[RESOLVIDO] [Dúvida] BlazeDS receber String em XML e converter para XMLList

6 respostas
Java_Boy

Olá pessoal!

Estou com uma aplicação que utiliza BlaseDS no Flex, e tenho um componente mx:Tree Control. Queria atualizar o conteúdo dele (dataProvider) por meio deu uma string XML que monto no Java, porem não consegui fazer isso com sucesso:
novoXML = new XMLList(event.resultado.result as XMLList);

minhaTree.dataProvider = novoXML.item;

onde

event.resultado.result vem do java como uma String :

"<root>
            <item label = "teste" >
                   <subItem label = "teste2"/>
            </item>
</root>"

Alguma idéia?

6 Respostas

Java_Boy

Resolvido =D Pra ajudar alguem algum dia :

var xmlCollection:XMLListCollection;

var xml:XML = <root></root>; //[b]Tag raiz do xml, pode ser qlqer nome[/b]

var retornoJava:String = event.result.toString(); //Retorno do Java => [b]<algumaCoisa> Conteudo </algumaCoisa>[/b]

xml.appendChild(retornoJava);		

seuXmlList = new XMLList(xml); //[b]adiciona xml [/b]

componenteTree.dataProvider = seuXmlList  //[b] voi lá[/b]
UpTheIrons

A. L.

Fiquei até feliz qdo vi sua solução *r, mas pra min n deu certo
Estou tentando fazer algo para menu, mas vamo q vamo.

renzonuccitelli
Pq vcs simplesmente não passam a string para o construtor de um XML ou XMLList? Vide exemplo:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
			   xmlns:s="library://ns.adobe.com/flex/spark"
			   xmlns:mx="library://ns.adobe.com/flex/mx"
			   minWidth="955"
			   minHeight="600"
			   creationComplete="application1_creationCompleteHandler(event)">
	<s:layout>
		<s:HorizontalLayout horizontalAlign="center" verticalAlign="middle"/>
	</s:layout>
	<fx:Script>
		<![CDATA[
			import mx.events.FlexEvent;

			//Transformando string em xmllista
			protected function application1_creationCompleteHandler(event:FlexEvent):void {
				var str:String="<root><noh>Noh</noh><outronoh>Outro Noh</outronoh></root>"
				var xmlList:XMLList=new XMLList(str);
				xmlListLabel.text=xmlList.toString();
			}
		]]>
	</fx:Script>
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	<s:Label id="xmlListLabel"/>
</s:Application>

Precisando de um curso Flex, confira os da Nuccitec.

[]s

UpTheIrons

Eh o q venho tentando, mas n deu certo.
Não sei se deve ao fato da minha estrutura XML ser um pouco mais complexa, pois se coloco
direto no código como XMLList, vai… mas se recebo primeiro como String, neca… mas amanha
futuco de novo.

Falew.

renzonuccitelli

Debugue o seu código e veja o conteudo da string que está sendo retornada. Não importa se seu xml é complexo ou não, se ele está bem formado, o Flex da conta.
Um problema que já tive e vi que outros amigos tiveram também é que existe um tipo de codificação UTF-8 com BOM (http://unicode.org/faq/utf_bom.html). O fato é que esse raio de bom insere uma assinatura com uns caracteres esquisitos no inicio do seu documento. Aí quando vc envia sua string com esse BOM, esses caracteres fazem seu xml ficar mal formado, e aí o Flex não tem como parsear. Se o seu xml for um arquivo, abra-o no Notepad++ e veja se o formato dele é o UTF-8 with BOM. Se for, vc pode usar o próprio Notepad++ para transformar em UTF without BOM. Aí a coisa funfa.
Se não puder alterar o formato do arquivo, então vc pode fazer uma lógica quando receber suas string no Flex, retirando os caracteres indesejados iniciais. Já precisei fazer isso quando estava lendo um xml de terceiro que eu não poderia mexer no formato do arquivo.

[]s

diego_qmota

Estou tendo o mesmo problema.

Estou tentando tirar os caracteres iniciais, mas está convertendo o arquivo para ansi quando faço isso

http://www.guj.com.br/prepost/239853/1237409/problemas-ao-gerar-arquivo-codificado-em-utf-8

Criado 25 de junho de 2010
Ultima resposta 25 de abr. de 2011
Respostas 6
Participantes 4