有人做过吗?基本上,我想通过保留 h1、h2、em 等基本标签来使用 html;清除 img 和 a 标签中的所有非 http 地址;和 HTMLEncode 每隔一个标签。
我被困在 HTML 编码部分。我知道要删除一个节点,您执行“node.ParentNode.RemoveChild(node);” 其中 node 是 HtmlNode 类的对象。我不想删除节点,而是想对它进行 HTMLEncode。
有人做过吗?基本上,我想通过保留 h1、h2、em 等基本标签来使用 html;清除 img 和 a 标签中的所有非 http 地址;和 HTMLEncode 每隔一个标签。
我被困在 HTML 编码部分。我知道要删除一个节点,您执行“node.ParentNode.RemoveChild(node);” 其中 node 是 HtmlNode 类的对象。我不想删除节点,而是想对它进行 HTMLEncode。
您需要删除代表您不想要的元素的节点。然后需要将编码的 HTML 作为文本节点重新添加。
如果您不想处理要丢弃的元素的子元素,则应该可以使用 OuterHtml ......这样的事情可能会起作用:
node.AppendChild(new HtmlTextNode { Text = HttpUtility.HtmlEncode(nodeToDelete.OuterHtml) });
上面的答案几乎涵盖了它。不过,还有一件事要补充。
您不想更改特定节点,而是更改所有节点,因此上面的代码可能是一个方法,包装在 if 语句中(以确保它是您想要 HtmlEncode 的标记)。更重要的是,由于 Agility Pack 不按序数公开节点,因此您无法迭代整个文档。递归是最简单的方法。你可能已经知道这...
我解决了一个类似的问题,并且有一些 shell 代码(C#)非常欢迎您使用: http ://dev.forrestcroce.com/normalizer-of-web-pages-qualifier-of-urls/2008-12 -09/