Sofern das HTML valides X(HT)ML ist, geht das super simpel:
XElement xmlTree = new XElement("Root", new XAttribute("Att1", "AttributeContent"), new XElement("Child", new XText("Some text"), new XElement("GrandChild", "element content") ) ); IEnumerable<XElement> de = from el in xmlTree.Descendants() select el; foreach (XElement el in de) Console.WriteLine(el.Name);
Ergibt: "Child", "GrandChild". Zusätzlich zu el.Name kannst Du natürlich auch auf die Attribute zugreifen, oder auf sonst alles, was Du brauchst.
Der Regex-Ausdruck zum Value-Parsen ist noch nicht ganz fertig da er "content="IE=8"" nicht erkennt. Mir fehlt gerade aber die Zeit ihn weiter auszubauen.