我正在寻找一种方法来去除HTML文档中所有隐藏的元素。

我可以删除包含样式display:nonevisible:hidden的元素,但是由于CSS类而被隐藏的元素又如何呢?有没有一种方法可以查看带有“ item-description”类的DIV并知道该类的样式表包含display:none

最佳答案

HtmlAgilityPack无法知道这一点,因为它不考虑样式,仅考虑DOM。

如果您希望真正能够在加载HTML之后处理样式,则必须


解析CSS(遵循所有@imports和其他技巧)
通过使用选择器将每个规则应用于每个DOM节点
应用继承规则以查看隐藏的内容或隐藏的内容,具体取决于父层次结构和规则
解决一致性问题(如果组件可见但父组件不可见,该怎么办?它将如何转换为最终文档?)
我希望您决定要模拟的浏览器,因为某些CSS规则将适用于特定的浏览器。
我也希望您不要在页面上碰到DOM的javascript ...


我确定我会忘记更多的东西...不要去那里!有毛病!

如果您真的想在C#中获得此结果,也许嵌入渲染引擎,然后通过javascript查询它是一种更好的方法。

10-07 18:15