Microsoft выпустила пример кода: SgmlReader . Это позволяет читать (среди других форматов) Tidy HTML.
Я написал небольшой вспомогательный метод, который преобразует строку HTML в строку XML:
/// <summary>
/// Converts a string from potential dirty HTML to valid XML
/// </summary>
/// <param name="input">The string to convert</param>
/// <returns>A valid XML fragment that contains the cleaned HTML</returns>
/// <remarks>This methods only format the html to an xml compatible parser.
/// The method does not clean dangerous tags from the source string</remarks>
public static string HtmlToXHtml(string input)
{
using (var sr = new StringReader(input))
{
var hr = new SgmlReader(sr);
hr.InputStream = sr;
hr.DocType = "HTML";
var output = new StringBuilder();
var hw = new XmlTextWriter(new StringWriter(output));
hr.Read();
while (!hr.EOF)
{
hw.WriteNode(hr, true);
}
return output.ToString();
}
}
Вы можете «просто» обновить ввод пользователя после обратной передачи.
В более сложных сценариях (при необходимости переключения между режимами wysiwyg и Html source) вам может потребоваться немного Ajax для преобразования строки html в xhtml за кулисами перед отображением источника html в текстовой области.