Создайте карту с именем, с которым HtmlControl отображается в элементе управления.Затем вы можете взять отправленную вам строку xml и загрузить ее, используя XDocument.Parse
.Оттуда вы можете рекурсивно построить структуру управления.
Dictionary<string, HtmlContainerControl> controlConstructor = new Dictionary<string, HtmlContainerControl>
{
{"table", new HtmlTable()},
{"tr", new HtmlTableRow()},
{"td", new HtmlTableCell()}
};
string xml = "<table><tr><td>item</td></tr></table>";
var htmlDoc = XElement.Parse(xml);
Func<XElement, HtmlControl> constructHtmlStructure = null;
constructHtmlStructure = e =>
{
var control = controlConstructor[e.Name.ToString()];
if (e.HasElements)
control.Controls.Add(constructHtmlStructure(e.Elements().Single()));
else
control.InnerText = e.Value;
return control;
};
var structure = constructHtmlStructure(htmlDoc);
Это очень простой старт.Вам нужно что-то гораздо более сложное, чтобы получить все элементы управления.Обратите внимание, что у них есть свойство TagName, которое вы можете использовать для захвата всех элементов управления при построении вашего словаря.