有人这样做过吗?基本上,我想通过保留h1,h2,em等基本标签来使用html;清除img和标签中的所有非http地址;和HTMLEncode每隔一个标签。
我坚持使用HTML编码部分。我知道要删除一个节点你做“node.ParentNode.RemoveChild(node);”其中node是HtmlNode类的对象。而不是删除节点,我想HTMLEncode它。
答案 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/