2011-06-10 68 views
2

是否有可能使用xpath来查找下面的html文档是否包含:hover或具有大小为12的元素?Xpath和CSS解析

<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> 

赞赏任何帮助,

回答

1

您无法在无效的XML文档上使用XPath,并且此无效。您可以使用但是HtmlAgilityPack或类似的东西来解析HTML DOM并获取样式标记的内容。然后,您必须为CSS定制一些自定义分析功能,或者查找能够实现这一点的库。

+0

感谢您的项目链接看起来非常有用 - 我可以使用// head // style来获取嵌入的CSS我认为虽然。是的,看起来我可能必须找到一个CSS解析器。非常感谢 :) – Kay 2011-06-10 11:18:15

1

您可以使用XPath不XML文档,以及CSS不是XML。所以如果你的样式不是HTML属性,你不能寻找样式(除非浏览器将CSS样式转换为DOM属性,那么它可以工作,也许有人会说这个)。我的建议是使用正则表达式来提取什么ids /类/标签具有所需的CSS属性,然后在xpath中使用。但是,对于这种情况,最有可能的情况是您需要多行正则表达式模式(不是这是个大问题,而只是一个注释)。

现在好了,现在我想起它可以使用xpath在风格标记中进行内容搜索,但是您仍然需要解析该内容,并且我认为您不会在没有正则表达式的情况下成功完成此操作,所以我建议在CSS解析步骤中跳过正则表达式。或者只是使用xpath来收集脚本元素,然后解析它们的内容,这样就不需要解析所有的HTML。

+0

我开始认为某种形式的解析也是需要的,因为xpath用于处理元素,属性等...... bt css真的可以称为属性,如果它不是内联css。到目前为止,我得到的最接近的是:// p [@ style ='font-size:12px'] – Kay 2011-06-10 11:11:12