Меня попросили вставить группу HTML в конкретную точку в документе HTML, и я пытался сделать это с помощью HTMLAgilityPack.Рекомендованный способ сделать это, насколько я могу судить, состоит в том, чтобы выполнить синтаксический анализ с использованием узлов и заменить / удалить соответствующие узлы.
Пока это мой код
//Load original HTML
var originalHtml = new HtmlDocument();
originalHtml.Load(@"C:\Temp\test.html");
//Load inject HTML
var inject = new HtmlDocument();
inject.Load(@"C:\Temp\Temp\inject.html");
var injectNode = HtmlNode.CreateNode(inject.Text);
//Get all HTML nodes to inject/delete
var nodesToDelete = originalHtml.DocumentNode.SelectNodes("//p[@style='page-break-after:avoid']");
var countToDelete = nodesToDelete.Count();
//loop through stuff to remove
int count = 0;
foreach (var nodeToDelete in nodesToDelete)
{
count++;
if (count == 1)
{
//replace with inject HTML
nodeToDelete.ParentNode.ReplaceChild(injectNode, nodeToDelete);
}
else if (count <= countToDelete)
{
//remove, as HTML already injected
nodeToDelete.ParentNode.RemoveChild(nodeToDelete);
}
}
Что яЯ обнаружил, что исходный HTML не обновляется правильно, похоже, что он только внедряет узел родительского уровня, который является простым и ни один из дочерних узлов.
Любая помощь ??
Спасибо,
Патрик.