Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html Xpath和CSS解析_Html_Css_Parsing_Xpath - Fatal编程技术网

Html Xpath和CSS解析

Html Xpath和CSS解析,html,css,parsing,xpath,Html,Css,Parsing,Xpath,是否可以使用xpath来确定以下html文档是否包含:hover或大小为12的元素 <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <style type="text/css"> a:link{ color:#000; } a:hover{ color:#333; } p{ font-size:12px; } </s

是否可以使用xpath来确定以下html文档是否包含:hover或大小为12的元素

<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<style type="text/css">
a:link{
  color:#000;
}
a:hover{
  color:#333;
}
p{
  font-size:12px;
}
</style>
</head>
<body>
<a href="foo.com">some text here</a>
<p>some more text</p>
</body>

</html>

a:链接{
颜色:#000;
}
a:悬停{
颜色:#333;
}
p{
字体大小:12px;
}
更多的文字

感谢您的帮助


Kay

您可以对非XML文档使用xpath,CSS也不是XML。所以,如果您的样式不在HTML属性中,您就无法查找样式(除非浏览器将CSS样式转换为DOM属性,否则它可以工作,也许有人会对此发表一些看法)。我的建议是使用regexp提取哪些id/class/tag具有所需的CSS属性,然后在xpath中使用这些属性。然而,对于这一点,您很可能需要多行正则表达式模式(这不是一个大问题,请注意)


事实上,现在我想到了,你们可以使用xpath在样式标签中进行内容搜索,但你们仍然需要解析那个些内容,并且我不认为在没有regexp的情况下你们能成功地完成这项工作,所以我建议在CSS解析步骤中跳过regex。或者只使用xpath收集脚本元素,然后解析它们的内容,这样您就不需要解析所有HTML。

您不能在无效的XML文档上使用xpath,而此文档是无效的。但是,您可以使用或类似的方法来解析HTML DOMа并获取样式标记的内容。然后,您必须为CSS进行一些自定义解析,或者寻找这样做的库。

我开始认为还需要某种形式的解析,因为xpath用于处理元素、属性等。。。如果bt css不是内联css,那么它真的可以被称为属性。到目前为止,我得到的最接近的链接是://p[@style='font-size:12px'],感谢项目链接看起来非常有用-我可以使用//head//style获取嵌入css的内容,我认为。是的,看来我还是得找个css解析器了。非常感谢:)