如何使用html敏捷包进行htmlencode?


0

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

我被困在HTML编码部分。我知道删除一个节点,你做了一个“node.ParentNode.RemoveChild(node);”其中node是类HtmlNode的对象。虽然我不想删除节点,但我想要HTMLEncode它。

1

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

如果你不想处理要扔掉元素的孩子,你应该能够只使用OuterHtml ......这样的事情可能工作:

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

0

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

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

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