【发布时间】:2018-10-03 02:11:30
【问题描述】:
有人要求我将一堆 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 没有正确更新,它看起来好像只注入了父级节点,这是一个简单的,没有子节点。
有什么帮助吗??
谢谢,
帕特里克。
【问题讨论】:
标签: c# html html-agility-pack