0

有人做过吗?基本上,我想通过保留 h1、h2、em 等基本标签来使用 html;清除 img 和 a 标签中的所有非 http 地址;和 HTMLEncode 每隔一个标签。

我被困在 HTML 编码部分。我知道要删除一个节点,您执行“node.ParentNode.RemoveChild(node);” 其中 node 是 HtmlNode 类的对象。我不想删除节点,而是想对它进行 HTMLEncode。

4

2 回答 2

1

您需要删除代表您不想要的元素的节点。然后需要将编码的 HTML 作为文本节点重新添加。

如果您不想处理要丢弃的元素的子元素,则应该可以使用 OuterHtml ......这样的事情可能会起作用:

node.AppendChild(new HtmlTextNode { Text = HttpUtility.HtmlEncode(nodeToDelete.OuterHtml) });
于 2008-09-23T20:08:30.283 回答
0

上面的答案几乎涵盖了它。不过,还有一件事要补充。

您不想更改特定节点,而是更改所有节点,因此上面的代码可能是一个方法,包装在 if 语句中(以确保它是您想要 HtmlEncode 的标记)。更重要的是,由于 Agility Pack 不按序数公开节点,因此您无法迭代整个文档。递归是最简单的方法。你可能已经知道这...

我解决了一个类似的问题,并且有一些 shell 代码(C#)非常欢迎您使用: http ://dev.forrestcroce.com/normalizer-of-web-pages-qualifier-of-urls/2008-12 -09/

于 2008-12-10T06:15:20.023 回答