CssSelector组件

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.8,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

CssSelector组件

CssSelector组件将CSS选择器转换为XPath表达式。

安装

1
美元作曲家需要symfony / cs欧宝娱乐app下载地址s选择器

或者,您可以克隆的https://github.com/欧宝娱乐app下载地址symfony/css-selector存储库。

请注意

如果你安装这个组件之外的Symfony应用程序,你必须要求欧宝娱乐app下载地址供应商/ autoload.php文件在你的代码,使作曲家提供的类加载机制。读这篇文章为更多的细节。

使用

另请参阅

这篇文章解释了如何使用CssSelector功能作为一个独立的组件在任何PHP应用程序。读了欧宝娱乐app下载地址Symfony功能测试篇文章来了解如何使用它在创建Symfony测试。欧宝娱乐app下载地址

为什么使用CSS选择器?

当你解析HTML或XML文档,XPath迄今为止最强大的方法。

XPath表达式非常灵活,所以几乎总是一个XPath表达式,找到你所需要的元素。不幸的是,他们也可以变得非常复杂,陡峭的学习曲线。甚至通用操作(如找到一个元素与特定类)可能需要漫长而笨拙的表达式。

许多开发人员——特别是web开发人员更喜欢使用CSS选择器找到元素。以及在样式表,在JavaScript使用CSS选择器querySelectorAll ()函数在jQuery等流行的JavaScript库,原型和MooTools。

比XPath CSS选择器不太强大,但更容易写,阅读和理解。因为他们更强大,几乎所有的CSS选择器可以转换成等价的XPath。这个XPath表达式可以用于其他函数和类文档中使用XPath找到元素。

CssSelector组件

2.8

CssSelectorConverter类是在Symfony 2.8中引入的。欧宝娱乐app下载地址在此之前,CssSelector类是使用和toXPath是一个静态方法。

组件的唯一目标是把XPath等价物CSS选择器,使用toXPath ():

1 2 3 4
使用欧宝娱乐app下载地址\组件\CssSelector\CssSelectorConverter;美元转换器=CssSelectorConverter ();var_dump (美元转换器- >toXPath (“div.item > h4 >“));

这给下面的输出:

1
子轴或self:: div [@class,包含(concat (normalize - space (@class) ' ', ' '),“项目”)]/ h4 / a

例如,你可以使用这个表达式DOMXPathSimpleXMLElement在文档中找到元素。

提示

爬虫:过滤器()方法使用CssSelector组件基于一个CSS选择器字符串找到元素。看到DomCrawler组件为更多的细节。

CssSelector组件的局限性

并不是所有的CSS选择器都可以转化为XPath等价物。

有几个CSS选择器,只有上下文中有意义的浏览器。

  • 链路状态选择器::链接,:参观,:目标
  • 选择器基于用户操作::徘徊,:专注,:主动
  • ui状态选择器::无效,:不确定(然而,:启用,:禁用,:检查:不是可用的)

伪元素(:在,:在,:一线,:首字母)不支持,因为他们选择的部分文本而不是元素。

几个还不支持伪类:

  • *:first-of-type,*:last-of-type,*:nth-of-type,*:nth-last-of-type,*:only-of-type。(这些处理一个元素名称(如。李:first-of-type),但不是*
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。