使用HTML Agility Pack ,如何从 HTML block 中删除所有 HTML 属性、元素等,其结果就像我将其粘贴到记事本中一样?
此外,我需要删除所有格式,但需要保留 UL/LI 和 B 标签。
最佳答案
将html输入到HtmlDocument实例中,可以获取DocumentNode属性返回的HtmlNode,并从那里获取文档节点的InnerText属性。它将为您提供所有去除 HTML 标签的文本。
如果您只想在过滤中包含特定的节点子集,那么会有点困难。
首先,您将内容加载到 HtmlDocument 实例中,并获取 DocumentNode 属性返回的 HtmlNode 实例(我将此文档中的该节点称为根节点)。
同时,您还可以创建第二个 HtmlDocument 实例,其中包含您正在创建的新文档。
在第一个文档中,您将递归地遍历根节点(注意,它不一定是实际递归方法,但从语义上讲,它将是递归行为),分析节点及其所有子节点。
如果该节点本身是您认可的节点之一,那么您将开始构造该节点的新实例。
但是,如果不是,您仍然会处理元素的子节点,获取文本节点内容(因为文本本身就是一个节点)并将其附加到堆栈上的任何当前节点(如果有一)。
关于c# - 如何使用 HTML Agility Pack 删除部分(或全部)HTML 元素和/或属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2351958/