Codificación de tags html en un archivo

Tengo un archivo xml como el siguiente

 </ some junk that is removed in regex  This is some text   H20  <?? more junt that is removed by the regex  more-text   

Tengo el siguiente código que se ejecuta a través de un archivo xml y hace algo de limpieza.

  public void Main() { string filename = @"C:\InnerTags.xml"; string config = @"C:\RegexConfig.xml"; string outputfn = @"C:\output.xml"; XmlDocument xdoc = new XmlDocument(); xdoc.Load(config); XmlElement xmlRoot = xdoc.DocumentElement; XmlNodeList xmlNodes = xmlRoot.SelectNodes(" /root/line"); using (FileStream fs = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) using (BufferedStream bs = new BufferedStream(fs)) using (StreamReader sr = new StreamReader(bs)) using (StreamWriter writer = new StreamWriter(outputfn)) { string line; while ((line = sr.ReadLine()) != null) { string output = line; foreach (XmlNode node in xmlNodes) { string pattern = node["pattern"].InnerText; string replacement = node["replacement"].InnerText; Regex rgx = new Regex(pattern); output = rgx.Replace(output, replacement); rgx = null; } if (output.Length > 0) { writer.WriteLine(output); } } writer.Close(); } } 

Esto fue para limpiar y eliminar algunas líneas de basura.

Ahora he encontrado que hay muchas tags HTML en este tipo de sub, sup, etc.

Quiero poder modificar esta secuencia de comandos para codificar tags HTML conocidas, como las de esta lista: https://msdn.microsoft.com/en-us/library/system.web.ui.htmltextwritertag(v=vs .110) .aspx

Mientras que también preserva las tags XML.

por lo que la salida sería

  </ some junk that is removed in regex  This is some text   H₂0  <?? more junt that is removed by the regex  more—text   

Pero una vez más para enfatizar que no solo quiero estas dos tags, ninguna en la lista, así que cursiva, negrita, br, etc.

¿Cómo se puede lograr esto?

Si bash codificarlo línea línea será codificar las tags xml que es peor.