我正在尝试使用CSQuery来引用网站的DOM。如果我在IE中打开一个站点并检查一个元素,它的HTML与使用CSQuery.CreateFromUrl方法加载的同一站点略有不同(属性的排序和值之间的间隔)。例如,IE生成的div样式为“style = margin-bottom:0.5em;”并且对于相同的div CSQuery的Render方法生成了不同的HTML“style = margin-bottom:0.5em;” [之后没有空格:]。
因此,当我为CSQuery创建一个选择器时,例如“div [style ='margin-left:0.5em;']”它不起作用,因为CSQuery的内部DOM在':'和'之间没有空格0.5' 。
我的问题是我的应用程序用户将使用IE来检查DOM元素,从而创建CSS选择器以使用CSQuery查询DOM。对于这种情况,我可以在我的代码中从选择器中删除空格但我不想这样做,因为其他选择器之间可能存在一些其他的细微差别。
那么有没有办法确保CSQuery生成与IE相同的DOM? 我已经尝试过使用CSQuery.Creat(HTML返回IE),但不知何故,CSQuery仍然以与IE DOM不同的方式格式化HTML。
谢谢, 贝
答案 0 :(得分:0)
在您的情况下,您只需要设置'解析方法'。
Check out official documentation
查找“从HTML创建”部分。
祝你好运。答案 1 :(得分:0)
问题不在于IE或CsQuery,两者都按设计工作。问题是您期望来自两个不同解析引擎的相同输出。 IE根据我的知识使用mshtml,CsQuery模仿Firefox使用的Gecko。因此,要获得相同的输出,您需要切换到mshtml或让您的用户使用firefox。您选择的组合将有多种差异,因为解析理念略有不同,并且它显示在您看到的这些异常中。