你如何使用html敏捷包htmlencode?

时间:2008-09-23 19:16:02

标签: xss html-agility-pack html-encode

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

我坚持使用HTML编码部分。我知道要删除一个节点你做“node.ParentNode.RemoveChild(node);”其中node是HtmlNode类的对象。而不是删除节点,我想HTMLEncode它。

2 个答案:

答案 0 :(得分:1)

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

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

node.AppendChild(new HtmlTextNode { Text = HttpUtility.HtmlEncode(nodeToDelete.OuterHtml) });

答案 1 :(得分:0)

上面的答案几乎涵盖了它。但是要添加一件事。

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

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