我怎样才能像这样转换xpath

/html/body/div[3]/ul/li[1]/a[5]

html > body > div[3] > ul > li[1] > a[5]

我相信,CSS3 选择器不支持索引......那么如何处理这个问题?

有帮助吗?

解决方案

如果您发现这种嘶嘶声/ jQuery的不能申请您的CSS3选择它可能是最好使用 XPath的插件这是jQuery的原始版本的一部分(然后删除,因为很少有人真正使用它)。

在浏览器

XPath实现趋于多比CSS发动机更快。还具有JS解析&转换XPath表达式为CSS3然后具有的jQuery Munge时间即弄成浏览器可以实现(通常CSS2.1选择与位JS援助的)将是的不是执行慢直接的XPath在浏览器中。

不仅如此,但有些事情的XPath能做到这一点的CSS不能。例如:点击 //h3[class="blog-title"]/../../div[class="blog-entry"]//input[fn:floor(value) > 3]结果 其本身并不是对CSS过于复杂的用于XPath来执行,但不可能 - 移动备份DOM和执行功能为不能(据我所知)被尚未这样做,即使在CSS3表达式的一部分

其他提示

硒1的CSS定位引擎从CSSQuery移动到嘶嘶声,jQuery的CSS选择库。 所以,你可以转换

div[3]/ul/li[1]/a[5] 

css=div:nth(3)>ul>li:nth(1)>a:nth(5)

//h3[class="blog-title"]/../../div[class="blog-entry"]//input[@value=3] 

可以被转化为

css=h3.blog-title:parent(div.blog-entry) input[value=3]

然而//input[@value>3]可以是不可能的或者是棘手的 欲了解更多信息,请访问: https://github.com/jquery/sizzle/wiki/Sizzle-主页

IE中的XPath实现是非常,非常慢。即使在IE6可怕的慢这就是为什么多数人倾向于基于正则表达式等,像嘶嘶使用CSS选择器或最新的是qwery。 为索引选择在CSS使用选择:nth-child(n)

a[5] = :nth-child(5)

我不能记住如果它与0或1启动,以便它也可以是4

此外,如果有不同类型的您选择在父内儿童的,则可以使用:nth-of-type()只选择给定类型。你的情况:

a:nth-of-type(5)

找了好久,终于找到了这2个库。希望它能帮助像我一样迷失的人:

  1. 詹姆斯·帕多尔西 CSS2X路径 YQL HTML在一个时间点使用
  2. CSS2X路径 - 通用 CSS 到 XPath 转换器

由于这是一个相当小众的领域,我欢迎社区对此进行编辑。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top