Olá galera,
Qual desenvolvedor Java e Flex não se deparou com a sintaxe estranha do texto produzido pelo RichTextEditor contido no Adobe Flex?

Segue abaixo exemplo simples utilizando Expressões Regulares em java de como remover esta formatação transformando o texto em XHTML 4.1 válido pela W3C.

package br.com.ronaldorigoni.FlexAndJava;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
/**
* Taglib para formatacao de texto proveniente do RichTextEditor do AdobeFlex
* @author ronaldorigoni.com.br
*
*/
public class XHTMLFormatting extends SimpleTagSupport {

/**
* Texto a ser convertido
*/
private String textToConverter;
/**
* Execucao da tag
*/
@Override
public void doTag() throws JspException, IOException {
super.doTag();
if(textToConverter!= null)
getJspContext().getOut()
.println(convertFlexTextToXHTML(textToConverter));
}

private String convertFlexTextToXHTML(String text){
String str = text;
// removendo todos os  TEXTFORMAT por espaco em branco
str = str.replaceAll("<TEXTFORMAT.*?>","");
// removendo todas as aberturas de tags  FONT
str = str.replaceAll("<FONT.*?>","");
// removendo todos as fechamentos de tags  FONT
str = str.replaceAll("</FONT.*?>","");
// Alterando atributo HREF para minusculo, padrao HTML
str = str.replaceAll("<A HREF","<a href");
// Convertendo todos os links para minusculo
str = str.replaceAll("</A>","</a>");
//  Alterando target para rel externo ( attr manipulado por JS )
str = str.replaceAll("TARGET="_blank"","target="externo" ");
// convertendo todas as aberturas de tags I para <em>
str = str.replaceAll("<I>","<em>");
// convertendo todos os fechamentos de tags I para <em>
str = str.replaceAll("</I>","</em>");
// alterando abertura de <B> para <strong>  padrao XHTM
str = str.replaceAll("<B>","<strong>");
// alterando fechamento de <B> para <strong>  padrao XHTM
str = str.replaceAll("</B>","</strong>");
// alterando para maiuscula para minuscula
str = str.replaceAll("<U>","<u>");
str = str.replaceAll("</U>","</u>");
// formatando para minusculo
str = str.replaceAll("</LI><LI>","</li><li>");
// formatando para minusculo
str = str.replaceAll("</LI>","</li></ul>");
// todo o inicio de uma <li>  deve ser procedido por uma <ul> por isso
// quando encontrarmos uma abertura de <LI> devemos
// abrir antes disto uma  <ul>
str = str.replaceAll("<LI>","<ul><li>");
// removendo formatacao de paragrafo,
// ( formatacao deve ser feita por CSS )
str = str.replaceAll("<P ALIGN="LEFT">","<p>");
str = str.replaceAll("<P ALIGN="CENTER">","<p>");
str = str.replaceAll("<P ALIGN="RIGHT">","<p>");
str = str.replaceAll("<P ALIGN="JUSTIFY">","<p>");
// todo o fechamento de paragrafo
str = str.replaceAll("</P>","</p>");
// removendo todo o final de </TEXTFORMAT>
str = str.replaceAll("</TEXTFORMAT.*?>","");
// removendo todas as UL vazias
str = str.replaceAll("</ul><ul>","");
/*
Caso queira remover os paragrafos em branco e principalmente
as listas em branco  resultandes de um ENTER no editor do Flex
descomente as duas linhas abaixo.
*/
//str = str.replaceAll("<p></p>","");
//str = str.replaceAll("<li></li>","");
return str;

}
/**
*  Getter  textToConverter
*/
public String getTextToConverter() {
return textToConverter;
}
/*
*  Setter textToConverter
*/
public void setTextToConverter(String textToConverter) {
this.textToConverter = textToConverter;
}

Este exemplo é a criação de uma Custom TagLibrary, mas pode também ser adaptado para outras linguagens.
Surgindo dúvidas ronaldo@ronaldorigoni.com.br
Até um próximo post.