2013-09-05 36 views
1

我有一个复杂的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一样。有没有可能?

回答

1

首先,我不认为你的“微调”做了最好的工作。元素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 
+1

我不认为'#T_I:3'是有效的(冒号将与伪类的开始相混淆)。你将不得不找到一种方法来逃避它。 –

+1

@FrédéricHamidi哇。我一直在使用XPath和CSS五年,并没有碰到这一点。谢谢你今天学习新东西! –

+0

感谢Slanec和Frederic。你的输入非常有用 – Venu