Comunidad de diseño web y desarrollo en internet online

FLEX textArea carga xml con html tags

Citar            
MensajeEscrito el 01 Sep 2008 02:31 pm
Hola a todos, tengo un problema a la hora de cargar datos de un xml cuando a los datos de este les pongo html tags. Cuando el xml esta limpio sin código html esto funciona barbaro. Se que tiene que ver con la aplicación de la propiedad html="true" y demas, pero lamentablemente no lo pude lograr. Me está carcomiendo la cabeza. Podrian ayudarme por favor? Gracias.

//el xml

<xml>
<node c1="46253" c2="75672"/>
<node c1="76665" c2="65786"/>
<node c1="34655" c2="57895"/>
<node c1="56455" c2="84566"/>
<node c1="45656" c2="23478"/>
</xml>


//el mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="dgXMLrqst.send()">
<mx:HTTPService id="dgXMLrqst" url="xml/xml.xml" useProxy="false"/>

<mx:Script>
<![CDATA[
[Bindable]
public var selectedEntry;
]]>
</mx:Script>

<mx:DataGrid x="20" y="20" id="dg" width="231" height="167" dataProvider="{dgXMLrqst.lastResult.xml.node}" change="selectedEntry=event.target.selectedItem">
<mx:columns>
<mx:DataGridColumn headerText="col1" dataField="c1"/>
<mx:DataGridColumn headerText="col2" dataField="c2"/>
</mx:columns>
</mx:DataGrid>
<mx:Text x="259" y="23" text="aca aparece el atributo &quot;c1&quot;" width="199" height="22" color="#D34919"/>
<mx:TextArea x="259" y="41" width="199" height="88" text="{selectedEntry.c1}"/>
</mx:WindowedApplication>


Una cosita mas, como hago para que cuando arranca la aplicación el textArea no aparezca en blanco y muestre el contendido del primer dato (columna 1)? Chau.

Por COOKERNATOR

43 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 01 Sep 2008 02:59 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Sep 2008 03:15 pm
Solisarg muchas gracias por responderme, ya me habian mencionado esa solución, pero dado que tengo que trabajar con un xml muy amplio el hecho de usar un CDATA para cada nodo es un poco fastidioso. No quiero ser pediguenio pero no saben si hay otra solución mas dinámica? algo como agegar alguna propiedad en el textArea y similiar? Yo en as1 habia trabajado algo y necesite implementar algo parecido, y me acuerdo que use unas propiedades htmls ("text.htmlText="") y me resulto, pero con flex no lo pude lograr intente de todo, use el html="true" y demas pero no hubo caso. Porfi una ayudita!

Por COOKERNATOR

43 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 01 Sep 2008 03:59 pm
El tema es que los tags de HTML rompen el XML y falla el parseo, no importa que le pongas a tu TextArea. En todo caso, considera no usar XML sino HTTPServices o incluso Remoting: http://www.flash-db.com/Tutorials/helloAS3/

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Sep 2008 04:01 pm
Les comento como es el asunto, yo genero el xml con asp tomando los datos de una BD en access. Los datos pueden contener html tags. Una vez que los datos son incorporados en un atributo del xml la aplicación AIR muestra esos datos en un datagrid. El problema es que no se cómo estructurar el xml con los CDATA que me sugirieron usar. Recien estuve haciendo pruebas (ya las habia hecho y nada) pero AIR me da error cuando meto CDATA en el xml. Qué me sugieren?
Les muestro las maneras que intente y que me dieron error:
Recuerden que en mi caso el único lugar donde puede haber etiquetas es dentro de un atributo!

Código :

//si lo pongo asi no me da error pero no me carga el nodo en question
<xml>   
 <![CDATA[<b><node c1="46253" c2="75672"/></b>]]>
                      <node c1="76665" c2="65786"/>
</xml>

Código :

//si lo pongo asi me da un error 1095 rpc fault string, atributo sin terminar
<xml>   
            <node c1="<![CDATA[<b>46253</b>]]>" c2="75672"/>
            <node c1="76665" c2="65786"/>
</xml>

Código :

//hasta probe envolviendo todo con CDATA pero fue inutil
<![CDATA[<b>
<xml>   
            <node c1="46253" c2="75672"/>
            <node c1="76665" c2="65786"/>
</xml>
</b>]]>


La segunda forma seria la mas conveniente dado que es mi caso pero da error. Alguna sugerencia?

Por COOKERNATOR

43 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 01 Sep 2008 04:04 pm
El CDATA es un nodo, no lo puedes meter como atributo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Sep 2008 05:45 pm
Entonces como hago?, yo necesito que mi aplicación este preparada para recibir datos de un xml cuyos atributos pueden o no contener html tags. En el caso de que sí tengan la aplicación no me levanta el xml (me da error). Que me sugeris? ya que no me puedo dar el lujo de quitarle los tags a los 500 registros de la Base de Datos.

Por COOKERNATOR

43 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 01 Sep 2008 06:18 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Sep 2008 06:32 pm
El problema es que como requisito la aplicación debe tomar los datos de un xml y no hay posibilidad de lo contrario, y segundo mi servidor no es php es asp. N sabes de alguna otra alternativa?

Por COOKERNATOR

43 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 01 Sep 2008 06:35 pm
Modifica la estructura del XML para que CDATA venga como un nodo
Modifica los bindings en tu mxml para que reflejen la nueva estructura
Pasar por nombre/valor es independiente del lenguaje. Tengo un tuto ya viejito (AS2) donde mostraba un ejemplo con asp: http://www.flash-db.com/Tutorials/loading/

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Sep 2008 02:04 pm
Gracias Jorge por tu apoyo. Estuve trabajando en el asunto y llegué a la conclusión de que la estructura del xml para que sea compatible en la app air con código html debe ser de la siguiente manera:

Código :

<xml>   
   <not>
      <titulo><![CDATA[<b>n1tit</b>]]></titulo>
      <texto><![CDATA[<b>n1txt</b>]]></texto>
   </not>
   <not>
      <titulo><![CDATA[<b>n2tit</b>]]></titulo>
      <texto><![CDATA[<b>n2txt</b>]]></texto>
   </not>
</xml>

Y el tree queda así:

n1tit
n2tit

n1tit
n2tit

Pero yo quiero separar las noticias por temas cosa que quede así:

TEMA1
I__n1tit
I__n2tit

TEMA2
I__n1tit
I__n2tit

Pero no hay forma de hacerlo, ya que si utilizo atributos en el nodo de la división de temas este inhabilita el nodo llamado igual que el atributo para el contenido de en este caso el titulo:
Es decir si hago esto:

Código :

<xml>   
   <not>
     <tema titulo="TEMA1">
       <not>
       <titulo><![CDATA[<b>n1tit</b>]]></titulo>
       <texto><![CDATA[<b>n1txt</b>]]></texto>
       </not>
       <not>
       <titulo><![CDATA[<b>n2tit</b>]]></titulo>
       <texto><![CDATA[<b>n2txt</b>]]></texto>
       </not>
     </tema>
   </not>
   <not>
     <tema titulo="TEMA2">
       <not>
       <titulo><![CDATA[<b>n1tit</b>]]></titulo>
       <texto><![CDATA[<b>n1txt</b>]]></texto>
       </not>
       <not>
       <titulo><![CDATA[<b>n2tit</b>]]></titulo>
       <texto><![CDATA[<b>n2txt</b>]]></texto>
       </not>
     </tema>
   </not>
</xml>

Lo cual quisiera quede así:

TEMA1
I__n1tit
I__n2tit

TEMA2
I__n1tit
I__n2tit

Ni en pedo queda así. No se si me explico.
Por favor necesito ayuda urgente por que si no me mato, en serio se los digo.
Gracias.
PD: El mxml que utilizo para cargar los xmls es el mismo que se menciono anteriormente, tal ves haya que hacer algun cambio en el dataprovider.

Por COOKERNATOR

43 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 03 Sep 2008 02:23 pm
Lo cual quisiera quede así: ...


¿Donde, en un datagrid?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Sep 2008 03:39 pm
Me extraña hombre, quisiera el contenido en un tree. Aunque ahora que lo mencionas estaria bueno meter todo en un datagrid avanzado y dentro de este que este el tree. Pero para empezer me gustaria que este en un componente Tree. Responder rápido plis! Gracias!

Por COOKERNATOR

43 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 03 Sep 2008 03:47 pm
Responder rápido plis!


Veré si respondo mañana, hoy estoy muy cansado

Jorge

PD: Algunas frases hay que evitarlas, a menos que le hables a tu empleado ;)

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Sep 2008 03:57 pm
Sepa disculpar, mi intención no fue herir a nadie. Voy a intentar no usar determinadas frases. Por cierto gracias por su cooperación.

Por COOKERNATOR

43 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 03 Sep 2008 04:04 pm
Ahora que leo bien lo que expresaste creo que si hubiera evitado decir "responder rápido" me hubieras contestado al instante. Aprendi algo nuevo, que no tengo que hablar del tiempo, ni apurar a otras personas a menos que sean mis empleados.

Por COOKERNATOR

43 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 04 Sep 2008 03:40 pm
Bueno, voy a plantear nuevamente el asuntirigillo pero con una versión renovada. Voy a usar un nuevo mxml, y una nueva estructura de xml.

//el mxml (el cambio mas relevante es que se añadio la propiedad "resultFormat="e4x"", de lo contrario no muestra el contenido en un tree, da error "object Object")

Código :

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="dgXMLrqst.send()">
<mx:HTTPService id="dgXMLrqst" url="xml/xml.xml" useProxy="false" resultFormat="e4x"/>
<mx:Script>   
<![CDATA[
[Bindable]
public var selectedEntry;     
]]>
</mx:Script>
<mx:HDividedBox width="100%" height="100%">
<mx:Tree id="myTree" width="50%" height="100%" alternatingItemColors="[#FFFFFF,#EEEEEE]" labelField="label" dataProvider="{dgXMLrqst.lastResult}" change="selectedEntry=event.target.selectedItem" enabled="true" showRoot="false" wordWrap="false"/>      
<mx:TextArea width="50%" height="100%" x="267" y="2" text="{selectedEntry.texto}" htmlText="true" wordWrap="false" editable="false"/>
</mx:HDividedBox>
</mx:WindowedApplication>


//el xml

Código :

<xml>   
   <tema titulo="TEMA1">
      <not>
         <titulo><![CDATA[<b>T1n1tit</b>]]></titulo>
         <texto><![CDATA[<b>T1n1txt</b>]]></texto>
      </not>
      <not>      
         <titulo><![CDATA[<b>T1n2tit</b>]]></titulo>
         <texto><![CDATA[<b>T1n2txt</b>]]></texto>
      </not>
   </tema>
   <tema titulo="TEMA2">
      <not>
         <titulo><![CDATA[<b>T2n1tit</b>]]></titulo>
         <texto><![CDATA[<b>T2n1txt</b>]]></texto>
      </not>
      <not>      
         <titulo><![CDATA[<b>T2n2tit</b>]]></titulo>
         <texto><![CDATA[<b>T2n2txt</b>]]></texto>
      </not>
   </tema>
</xml>


Ahora cuando tomo los datos no importa si contiene html tags estos son visualizados correctamente, o mas o menos, ya que no respeta el código html, pero no da error (muestra el contenido tal cual del CDATA). El problema que surge ahora es que el arbol (tree) se distorciona. Lamentablemente estuve luchando sin tregua hasta el final pero no pude hacer que el maldito tree se vea como quiero. Cada noticia que se incorpora al tree se genera con su propia carpeta y no hay nada que pueda hacer al respecto.
La idea es que el tree quede asi:

TEMA1
I__T1n1tit

TEMA2
I__T2n1tit

Sin embargo mi resultado es un bastante diferente (porfa usen el código y veanlo con sus propios ojos! es muy raro!)
Es como que genera una carpeta a partir de cada nodo, entonces queda un chorizo de carpetas y no se que hacer, ya gaste todas las alternativas. Que me sugieren? Saludos.

Por COOKERNATOR

43 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 05 Sep 2008 11:44 am
No veo que pueddas usar bindings directamente. El componente Tree es muy específico en el XML que necesita, quizás te convenga parsearlo a mano, armar un XML que le cuadre perfecto al tree y con los nodos CDATA haces un array de textos que muestras cuando se selecciona algo en el tree

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.