c# - 如何使用 HTML Agility Pack 删除部分(或全部)HTML 元素和/或属性?

标签 c# .net html-parsing

使用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/

相关文章:

c# - 将视频上传到特定 channel /Youtube

c# - 为什么用我自己的类的实例调用 DynamicMethod 会导致异常?

c# - CaSTLe Windsor - 开放通用接口(interface)的 IoC 注册?

ruby - 使用 RegExp (Ruby) 从 HTML 标签中提取字符串

python - 使用 Beautifulsoup 进行网页抓取,带来不同的内容

html - Struts 标签替换

c# - 遍历File1.txt和File2.txt确实很慢。这两个文件均为280MB

c# - 将每个方法放在单独的文件中是一种不好的做法吗?

c# - 如何在业务逻辑层设计数据传输对象

c# - 我可以使用什么打印机通过 .Net 应用程序进行按需工业打印?