8 juin 2010

INFOPATH : HTML to XHTML

Il est toujours très compliqué de passer du format HTML au XHTML!
Le soucis est qu'InfoPath possède un éditeur Rich text qui est au format XHTML 1.0...

Comment procéder pour insérer un contenu HTML dans du XHMTL?
Il y a la solution de l'expression régulière que j'ai abordé précédemment dans ce blog.
Mais cette solution reste quand même très basique et pas assez efficace pour une utilisation de tous les jours.

Un peu de recherche m'a permis de tomber sur le projet SGMLReader qui est une bien meilleure approche (avec un résultat plus convaincant).


Ce projet comprend une dll qui peut-être incorporée dans votre projet InfoPath (avec du code managé).
Il vous suffit ensuite d'utiliser cette fonction perso qui utilise la fameuse dll SGMLReader (voir ci-dessous):
public string Html2Xhtml(string strHTML)
{
      Sgml.SgmlReader XHTML = new Sgml.SgmlReader();
      StringWriter sw = new StringWriter();
      XmlTextWriter w = new XmlTextWriter(sw);
      XHTML.DocType = "HTML";
      XHTML.InputStream = new StringReader(strHTML);
      while (!XHTML.EOF)
     {
          w.WriteNode(XHTML, true);
     }
     w.Close();
     return sw.ToString();
}

Puis d'appeler votre fonction:


string strXHTML = Html2Xhtml(strInputHTML);
//Ensuite ajouter "http://www.w3.org/1999/xhtml/" dans la balise ouvrante HTML .
...
// Affectation du mail dans le rich text
nav.SelectSingleNode("//my:ChampXHTML",NamespaceManager).AppendChild(strXHTML);

Et le tour est joué!

Aucun commentaire:

Enregistrer un commentaire