我正在寻找一种方法来去除HTML文档中所有隐藏的元素。
我可以删除包含样式display:none
或visible:hidden
的元素,但是由于CSS类而被隐藏的元素又如何呢?有没有一种方法可以查看带有“ item-description”类的DIV
并知道该类的样式表包含display:none
?
最佳答案
HtmlAgilityPack无法知道这一点,因为它不考虑样式,仅考虑DOM。
如果您希望真正能够在加载HTML之后处理样式,则必须
解析CSS(遵循所有@imports
和其他技巧)
通过使用选择器将每个规则应用于每个DOM节点
应用继承规则以查看隐藏的内容或隐藏的内容,具体取决于父层次结构和规则
解决一致性问题(如果组件可见但父组件不可见,该怎么办?它将如何转换为最终文档?)
我希望您决定要模拟的浏览器,因为某些CSS规则将适用于特定的浏览器。
我也希望您不要在页面上碰到DOM的javascript ...
我确定我会忘记更多的东西...不要去那里!有毛病!
如果您真的想在C#中获得此结果,也许嵌入渲染引擎,然后通过javascript查询它是一种更好的方法。