我们如何使用html敏捷包htmlencode?
时间:2020-03-06 14:37:15 来源:igfitidea点击:
有人做过吗?基本上,我想通过保留h1,h2,em等基本标签来使用html;清除img和标签中的所有非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 /