2010-02-05 10 views
0

J'essaie d'utiliser XML pour convertir le code qu'un RTE Flex crée en HTML valide. Aucun problème sur les autres éléments HTML, mais difficulté avec les listes non ordonnées. J'ai créé une solution pour déplacer des LI consécutifs dans un noeud UL. Après essais et erreurs, j'ai trouvé la solution suivante. Y a-t-il une meilleure manière de faire cela?Obtenir un RTE Flex pour grouper les éléments LI correctement en XML (enveloppé dans une balise UL)

for each (listXML:XML in xml..li) { 

    if (listXML.children().length() == 0) { 

     // list item is empty - make it an empty paragraph instead 
     listXML.parent().replace(listXML.childIndex(), <p />); 

    } else if (listXML.parent().children()[listXML.childIndex() - 1].name() != 'ul') { 

     // first LI - wrap in UL 
     listXML.parent().replace(listXML.childIndex(), '<ul>' + listXML.toXMLString() + '</ul>'); 

    } else if (listXML.parent().children()[listXML.childIndex() - 1].name() == 'ul') { 

     // move LI into previous UL node 
     var lastUL:int = listXML.parent().children()[listXML.childIndex() -1].childIndex(); 
     var parentXML:XML = listXML.parent(); 

     delete listXML.parent().children()[listXML.childIndex()]; 
     parentXML.children()[lastUL].appendChild(listXML); 

    } 
} 

Répondre

0

Merci beaucoup! C'était exactement ce que je dois ... ont parfaitement fonctionné, sauf pour:

listXML.parent().replace(listXML.childIndex(), '(ul)' + listXML.toXMLString() + '(/ul)'); 

Au lieu de cela j'utilisé:

listXML.parent().replace(listXML.childIndex(), (ul){listXML}(/ul)); 

Y at-il une meilleure façon de le faire? Je l'ai d'abord essayé avec string regexp mais je n'ai pas travaillé ... Mais oui, il y a probablement une meilleure façon de le faire ...

Quoi qu'il en soit! cela fonctionne ..