Требование: добавить собственный html после тега body в строке
Я решил с помощью htmlagilitypack так:
StringBuilder sb = new StringBuilder();
sb.Append(customStringWithHtmlContent)
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(sb.ToString());
// Create new node from newcontent
HtmlNode newNode = HtmlNode.CreateNode("<div>" + someStringWithAdditionalContent + "</div>");
// Get body node
HtmlNode body = htmlDoc.DocumentNode.SelectSingleNode("//body");
if (body != null)
{// Add new node as first child of body
body.PrependChild(newNode);
}
var docContent = htmlDoc.DocumentNode.InnerHtml;
Выглядит хорошо, но на некоторых html-страницах структура html изменяется, закрывается divтеги перемещены и html выглядит ужасно
второе решение:
if (sb.ToString().Contains("<body>"))
{
sb.Replace("<body>", "<body><div>" + someStringWithAdditionalContent + "</div>");
}
выглядит хорошо, но не является решением для тела с атрибутами, такими как
<body style="someAttr:value ..." ...>
некоторые идеи? другие решения?