我有一个复杂的html结构。新的CSS。想改变我的XPath的CSS,因为可以在IE如何将复杂的xpath转换为css
Xpath的一些性能影响的萤火虫:.//*[@id='T_I:3']/span/a
我要微调,://div[@id='Overview']/descendant::*[@id='T_I:3']/span/a
现在我需要相应的CSS一样。有没有可能?
我有一个复杂的html结构。新的CSS。想改变我的XPath的CSS,因为可以在IE如何将复杂的xpath转换为css
Xpath的一些性能影响的萤火虫:.//*[@id='T_I:3']/span/a
我要微调,://div[@id='Overview']/descendant::*[@id='T_I:3']/span/a
现在我需要相应的CSS一样。有没有可能?
首先,我不认为你的“微调”做了最好的工作。元素id
在文档中应该是唯一的,因此通常由现代浏览器缓存(这意味着id查找是即时的)。您可以使用id()
函数来帮助XPath引擎。
因此,XPath表达式是:id('T_I:3')/span/a
(是的,这是一个有效的XPath 1.0表达式)。
无论如何,将其转换为CSS,你会使用:转换将#T_I:3 > span > a
你的“微调,”表达:div#Overview #T_I:3 > span > a
,但严重的是,你只需要一个id
选择。
The hashtag #
is an id
selector.
The space () is a descendant combinator.
The >
sign is a child combinator.
基于由弗雷德里克·哈米迪一个很好的注释编辑:
我不认为
#T_I:3
是有效的(冒号将与伪类的 开头相混淆)。你将不得不找到一种方法来逃避它。
原来你也需要逃避下划线。为此,请使用本SO问题中提到的技术:Handling a colon in an element ID in a CSS selector。
最终的CSS选择器将是:
#T\5FI\3A3 > span > a
我不认为'#T_I:3'是有效的(冒号将与伪类的开始相混淆)。你将不得不找到一种方法来逃避它。 –
@FrédéricHamidi哇。我一直在使用XPath和CSS五年,并没有碰到这一点。谢谢你今天学习新东西! –
感谢Slanec和Frederic。你的输入非常有用 – Venu