css中哪些是组件,CssSelector组件

CssSelector组件把CSS选择器转换成Xpath表达式。

安装 ¶

你可以通过下述两种方式安装:

然后,包容vendor/autoload.php文件,以开启Composer提供的自动加载机制。否则,你的程序将无法找到这个Symfony组件的类。

用法 ¶

为何使用CSS选择器 ¶

当你要解析一个HTML或XML文档时,目前最强力的方法是Xpath。

Xpath表达式极其灵活,几乎总是有会有一个Xpath表达式能够找到你需要的元素。不幸的是,它们也变得非常复杂,学习曲线是陡峭的。甚至普通操作(像是查找一个带有特定的class的元素)都需要很长很笨重的表达式。

许多开发者——特别是web开发者——习惯于使用CSS选择器(selector)来找到元素。不光适合于样式表,CSS选择器配合 querySelectorAll 函数还可用于JavaScript,包括流行的JS类库比如JQuery,Prototype以及MooTools等。

CSS选择器相比Xpath少了几分强大,但却易写、易读、易理解。由于它们不够强力,差不多所有的CSS选择器都可以被转换为一个等价的Xpath。然后这个Xpath表达式即可用于其他的函数或类中,以便借助Xpath来在文档中查找元素。

CssSelector组件 ¶

本组件的唯一目标就是把CSS selector转换成与之等价的Xpath,使用

1

2

3

4use Symfony\Component\CssSelector\CssSelectorConverter;

$converter = new CssSelectorConverter();

var_dump($converter->toXPath('div.item > h4 > a'));

这会输出以下内容:

1descendant-or-self::div[@class and contains(concat(' ',normalize-space(@class), ' '), ' item ')]/h4/a

你可以将这个表达式用在,比如,

DomCrawler组件 以了解细节。

CssSelector组件的限制 ¶

不是所有CSS选择器都可以被转换为等价的Xpath。

有几个CSS selector只对浏览器上下文有意义。

link-state selectors(链接状态选择器): :link, :visited, :target

selectors based on user action(基于用户动作的选择器): :hover, :focus, :active

UI-state selectors(UI状态选择器): :invalid, :indeterminate (however, :enabled,

:disabled, :checked and :unchecked are available)

Pseudo-elements (:before, :after, :first-line,

:first-letter) 伪元素不受支持,因为它们选择的是文本部分而非元素。

另有几个pseudo-classes(伪类)尚未支持:

*:first-of-type, *:last-of-type, *:nth-of-type,

*:nth-last-of-type, *:only-of-type. (这些都与一个元素的名称 (如 li:first-of-type) 一起工作,但却不能与 * 工作。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值