2011-06-10 91 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