Traitement Syntaxe RichTextEditor
Hello, je me casse la tête depuis un bout de temps sur la syntaxe RichTextEditor, mon but est de générer des mx:Text à partir du htmlText du RichTextEditor.
Après quelques modifications, j'arrive au XML suivant après avoir séparé les lignes.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
<txts>
<line>
<FONT FACE="Verdana" SIZE="10" COLOR="#FF0000">
a
<FONT COLOR="#0B333C">
<FONT COLOR="#0000FF">b</FONT>
<FONT COLOR="#996600">c</FONT>
<FONT COLOR="#FF00CC">d</FONT>
</FONT>
</FONT>
</line>
</txts> |
Ensuite, il faut séparer les tags FONT, j'ai donc écrit le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
var deln0:Number = 0;
var deln1:Number = 0;
var deln2:Number = 0;
for each(var node0:XML in txt.line)
{
deln1 = 0;
for each(var node1:XML in node0.FONT)
{
deln2 = 0;
for each(var node2:XML in node1.FONT)
{
//----------- Récuperation des attributs du noeud parent s'ils ne sont pas définis
var newnode:XML = node2;
delete txt.line[deln0].FONT[deln1].FONT[deln2];
txt.line[deln0].appendChild(newnode);
deln2 += 1;
}
deln1 += 1
}
deln0 += 1;
} |
Et pour récuperer les attributs du noeud parent (pas de souci ici, ça fonctionne):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
if(node2.@FACE.length())
{}
else
{
trace("No face --> get previous = " + node1.attribute("FACE"));
node2.@FACE = node1.attribute("FACE");
}
if(node2.@SIZE.length())
{}
else
{
trace("No size --> get previous = " + node1.attribute("SIZE"));
node2.@SIZE = node1.attribute("SIZE");
}
if(node2.@COLOR.length())
{}
else
{
trace("No color --> get previous = " + node1.attribute("COLOR"));
node2.@COLOR = node1.attribute("COLOR");
} |
Problème : je crois que le Flex n'analyse pas les noeuds s'il n'y a pas de texte à l'interieur même s'il y a des childnodes dedans.
A la fin je devrai obtenir :
Code:
1 2 3 4 5 6 7 8 9
|
<txts>
<line>
<FONT FACE="Verdana" SIZE="10" COLOR="#FF0000">a</FONT>
<FONT COLOR="#0000FF">b</FONT>
<FONT COLOR="#996600">c</FONT>
<FONT COLOR="#FF00CC">d</FONT>
</line>
</txts> |
Si quelqu'un pouvait m'aider ça serait génial =)
Et surtout s'il y a un moyen de faire ça sans des boucles dans des boucles ... XD