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.
Ensuite, il faut séparer les tags FONT, j'ai donc écrit le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
Et pour récuperer les attributs du noeud parent (pas de souci ici, ça fonctionne):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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"); }
A la fin je devrai obtenir :
Si quelqu'un pouvait m'aider ça serait génial =)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
Et surtout s'il y a un moyen de faire ça sans des boucles dans des boucles ... XD
Partager