Mojo::DOM::CSS-CSS选择器引擎
使用Mojo::DOM::CSS;#从DOM树中选择元素my$css=Mojo::DOM::css->new(tree=>$tree);我的$elements=$css->select('h1,h2,h3');
Mojo::DOM::CSS是使用的CSS选择器引擎Mojo::DOM,基于HTML生活标准和选择器级别3.
支持对独立解析器有意义的所有CSS选择器。
任何元素。
my$all=$css->select('*');
类型为的元素E类
.
my$title=$css->select(“标题”);
安E类
元素,带有foo公司
属性。
我的$links=$css->select('a[href]');
安E类
元素,其foo公司
属性值正好等于酒吧
.
我的$case_sensitive=$css->select('input[type=“hidden”]');my$case_sensitive=$css->select('input[type=hiddend]');
安E类
元素,其foo公司
属性值正好等于酒吧
。请注意,此选择器是实验而且可能会毫无征兆地改变!
my$case_insitive=$css->select('input[type=“hidden”i]');my$case_insitive=$css->select('input[type=hiddeni]');my$case_insensitive=$css->select('input[class~=“foo”i]');
此选择器是选择器级别4,这项工作仍在进行中。
安E类
元素,其foo公司
属性值精确且区分大小写等于酒吧
。请注意,此选择器是实验而且可能会毫无征兆地改变!
我的$case_sensitive=$css->select('input[type=“hidden”s]');
此选择器是选择器级别4,这项工作仍在进行中。
安E类
元素,其foo公司
属性值是一个由空格分隔的值列表,其中一个值正好等于酒吧
.
我的$foo=$css->select('input[class~=“foo”]');我的$foo=$css->select('input[class~=foo]');
安E类
元素,其foo公司
属性值正好以字符串开头酒吧
.
我的$begins_with=$css->select('input[name^=“f”]');我的$begins_with=$css->select('input[name^=f]');
安E类
元素,其foo公司
属性值正好以字符串结尾酒吧
.
my$ends_with=$css->select('input[name$=“o”]');我的$ends_with=$css->select('input[name$=o]);
安E类
元素,其foo公司
属性值包含子字符串酒吧
.
my$contains=$css->选择('input[name*=“fo”]');my$contains=$css->select('input[name*=fo]');
安E类
元素,其foo公司
属性具有以连字符分隔的值列表,这些值以恩
.
my$english=$css->select('link[hreflang|=en]');
安E类
元素,文档的根。
my$root=$css->select(':root');
安E类
元素第n个
其父级的子级。
我的第三个$=$css->select('div:nth-child(3)');我的$odd=$css->select('div:nth-child(odd)');我的$even=$css->select('div:nth-child(even)');我的$top3=$css->select('div:nth-child(-n+3)');
安E类
元素第n个
其父级的子级,从最后一个开始计算。
我的第三个$=$css->select('div:nth-last-child(3)');我的$odd=$css->select('div:nth-last-child(odd)');my$even=$css->选择('div:nh last child(even)');我的$bottom3=$css->select('div:nth-last-child(-n+3)');
安E类
元素第n个
其类型的同级。
我的第三个$=$css->select('div:nth-of-type(3)');my$odd=$css->选择('div:nth of type(odd)');我的$even=$css->select('div:nth-of-type(even)');我的$top3=$css->select('div:nth-of-type(-n+3)');
安E类
元素第n个
其类型的同级,从最后一个开始计算。
我的第三个$=$css->select('div:nth-last-of-type(3)');我的$odd=$css->select('div:nth-last-of-type(odd)');我的$even=$css->select('div:nth-last-of-type(even)');我的$bottom3=$css->select('div:nth-last-of-type(-n+3)');
安E类
元素,它的父级的第一个子级。
我的$first=$css->select('div p:第一个孩子');
安E类
元素,它的父级的最后一个子级。
my$last=$css->select('div p:last-child');
安E类
元素,它的类型的第一个同级。
my$first=$css->select('div p:first of-type');
安E类
元素,它的类型的最后一个同级。
my$last=$css->select('div p:last-of-type');
安E类
元素,其父元素的唯一子元素。
my$loney=$css->select('div p:only-child');
安E类
元素,只有其类型的同级。
my$loney=$css->select('div p:only-of-type');
安E类
没有子级的元素(包括文本节点)。
my$empty=$css->select(':empty');
的别名“E:链接”。请注意,此选择器是实验而且可能会毫无预警地发生变化!此选择器是选择器级别4,这项工作仍在进行中。
安E类
元素是尚未访问其目标的超链接的源锚点(:链接
)或已访问(:已访问
). 请注意Mojo::DOM::CSS因此不是有状态的:任意链接
,:链接
和:已访问
产生完全相同的结果。
my$links=$css->选择(':任意链接');我的$links=$css->select(':link');my$links=$css->select(':visited');
的别名“E:链接”.
安E类
元素是指定的参考元素。请注意,此选择器是实验而且可能会毫无征兆地改变!
my$scoped=$css->select('a:not(:scope>a)');my$scoped=$css->select('div:scope p');我的$scoped=$css->select('~p');
此选择器是选择器级别4,这项工作仍在进行中。
用户界面元素E类
已选中(例如,单选按钮或复选框)。
我的$input=$css->select(':checked');
安E类
类为“warning”的元素。
我的$warning=$css->select('div.warning');
安E类
具有的元素身份证件
等于“myid”。
我的$foo=$css->select('div#foo');
安E类
与任一复合选择器都不匹配的元素第1页
或复合选择器s2秒
。请注意,对复合选择器的支持是实验而且可能会毫无征兆地改变!
my$others=$css->选择('div p:not(:第一个孩子,:最后一个孩子)');
添加了对复合选择器的支持,作为选择器级别4,这项工作仍在进行中。
安E类
与复合选择器匹配的元素第1页
和/或复合选择器s2秒
。请注意,此选择器是实验而且可能会毫无征兆地改变!
my$headers=$css->select(':is(section,article,aside,nav)h1');
此选择器是选择器级别4,这项工作仍在进行中。
安E类
元素,如果是其中一个相对选择器相对标准偏差1
或第2轮
,使用进行计算时E类
作为:scope元素,匹配一个元素。请注意,此选择器是实验而且可能会毫无征兆地改变!
我的$link=$css->select('a:has(>img)');
此选择器是选择器级别4,这项工作仍在进行中。还要注意,此功能当前已标记有风险
,因此很有可能将其完全移除。
安E类
包含子字符串匹配的文本内容的元素字符串或正则表达式
区分大小写或正则表达式匹配字符串或正则表达式
。对于正则表达式,请使用以下格式:text(/…/)
。请注意,此选择器是实验而且可能会毫无征兆地改变!
#子串匹配my$login=$css->select(':text(Log in)');#Regex匹配my$login=$css->select(':text(/Log?in/)');#Regex匹配(区分大小写)my$login=$css->select(':text(/(?i:登录)/)');
这是的自定义选择器Mojo::DOM而不是任何规格的一部分。
安E类
属于命名空间别名的元素A类
从CSS命名空间模块级别3。传递给选择器方法的键/值对用于声明命名空间别名。
my$elem=$css->select('lq|elem',lq=>'http://example.com/q-markup');
使用空别名搜索不属于任何命名空间的元素。
我的$div=$c->select('|div');
安F类
元素的后代E类
元素。
我的$headlines=$css->select('div h1');
安F类
元素的子元素E类
元素。
my$headlines=$css->select('html>body>div>h1');
安F类
元素前面紧跟一个E类
元素。
我的$秒=$css->select('h1+h2');
安F类
元素前面有E类
元素。
我的$second=$css->select('h1~h2');
类型的元素E类
,F类
和G公司
.
my$headlines=$css->选择('h1,h2,h3');
安E类
元素,其属性与以下所有属性选择器匹配。
我的$links=$css->select('a[foo^=b][foo$=ar]');
Mojo::DOM::CSS实现以下属性。
my$tree=$css->树;$css=$css->tree(['root']);
文档对象模型。请注意,由于此结构非常动态,因此只能非常小心地使用。
Mojo::DOM::CSS从继承所有方法Mojo::基础并实现了以下新功能。
我的$bool=$css->匹配('head>title');我的$bool=$css->匹配('svg|line',svg=>'http://www.w3.org/2000/svg');
检查中的第一个节点“树”匹配CSS选择器。尾部键/值对可用于声明xml命名空间别名。
我的$results=$css->select('head>title');my$results=$css->select('svg|line',svg=>'http://www.w3.org/2000/svg');
对运行CSS选择器“树”。尾部键/值对可用于声明xml命名空间别名。
my$result=$css->select_one('head>title');我的$结果=$css->select_one('svg|line',svg=>'http://www.w3.org/2000/svg');
对运行CSS选择器“树”并在第一个节点匹配后立即停止。尾部键/值对可用于声明xml命名空间别名。
您可以设置MOJO_DOM_CSS_DEBUG公司
将一些高级诊断信息打印到的环境变量STDERR公司
.
MOJO_DOM_CSS_DEBUG=1
Mojolicious公司,Mojolicious::指南,https://mojolicious.org.