【发布时间】:2018-07-26 22:13:38
【问题描述】:
我正在开发一个需要解析网页并转换为另一种格式的 C# 应用程序。无需深入了解输出格式和用例等。我的问题是获取任何给定元素的计算 CSS,在这种情况下是大多数元素。我正在处理内联样式、CSS 和格式化元素(如 <strong>,<em>,<u> 等)的组合。
我目前正在将网页加载到 mshtml 并使用 IHTMLElement2 接口访问 currentStyle 对象。事实证明这太慢了。我已经对其进行了分析,并且花费了大量时间通过调用 currentStyle.XXX 来获取样式规则的值。由于我需要查询多个属性,即每个元素重复的背景颜色、字体系列、字体大小、文本对齐、文本装饰等,我正在执行数千次 COM 调用,并且需要几分钟的时间文档。所有现代浏览器都在几分之一秒内做到这一点。我想这是杀死我的 COM 互操作?
有没有更好的方法? 我想一次性获得所有适用于元素的计算样式规则。 有人知道如何使用 IHTMLElementAppliedStyles 吗?它做我正在寻找的东西吗?你从哪里得到它的实例?旁注:我正在引用 HTML 对象库来获取 mshtml,但它似乎不是 IE9/10 版本???并非所有接口都可用,即 IHTMLDocument7
谢谢,
【问题讨论】: