我正在創建一個工具,用於檢查動態生成的XHTML並根據預期內容進行驗證。服務器端css選擇器
我需要確認結構是否正確以及特定屬性是否存在/匹配。可能還有其他我不感興趣的屬性,所以直接字符串比較是不合適的。
驗證此方法的一種方法是使用XPath,而且我已經實現了這一點,但我還想要一些不太冗長的東西 - 我希望能夠像使用jQuery一樣使用CSS選擇器,但在服務器上 - 在CFML代碼中 - 而不是在客戶端上。
是否有一個CFML或Java庫,允許我使用CSS選擇器來處理XHTML字符串?
我正在創建一個工具,用於檢查動態生成的XHTML並根據預期內容進行驗證。服務器端css選擇器
我需要確認結構是否正確以及特定屬性是否存在/匹配。可能還有其他我不感興趣的屬性,所以直接字符串比較是不合適的。
驗證此方法的一種方法是使用XPath,而且我已經實現了這一點,但我還想要一些不太冗長的東西 - 我希望能夠像使用jQuery一樣使用CSS選擇器,但在服務器上 - 在CFML代碼中 - 而不是在客戶端上。
是否有一個CFML或Java庫,允許我使用CSS選擇器來處理XHTML字符串?
我剛剛發佈了一個開源項目,這是一個W3C CSS Selectors Level 3的Java實現。請試一試。我正在尋找同樣的東西,並決定實施我自己的引擎。它受WebKit中代碼的啓發
我不知道Java庫本身,但有一個名爲Hpricot的Ruby庫,它完全符合您的需求。結合Java平臺上的Ruby實現JRuby,從Java代碼調用Ruby方法(使用BSF,JSR-222 Scripting APIs或an internal API)應該相對簡單。
您使用Coldfusion 8嗎? Coldfusion 8基於Java 6,支持JSR-222腳本API「javax.scripting」。請參閱this blog entry on embedding PHP within CFML。你應該可以做與Ruby相同。從這篇博客文章中鏈接了ZIP文件示例代碼,如果你打開CFML,你會看到一個在Ruby中嵌入Ruby的好例子。
儘管可能需要一些工作才能使所有部分一起工作,但只需一點投資,它應該爲您提供可靠的解析/ CSS選擇器查詢您正在查找的內容。
服務器和客戶端之間存在理論上的差異。對於Web瀏覽器來說,文檔是一個生動的DOM層次結構。對於你的服務器代碼,它只是一個任何類型的XML文檔。 XPath是訪問XML文檔元素的「正確」方式。
所以,除非您使用當前的XPath解決方案存在嚴重的性能問題,否則它實際上並不能正常工作,所以我建議您堅持使用它。嘗試一些過於巧妙的事情會帶來破壞某些工作的風險。
如果您發現的XPath是過於冗長和醜陋離開圍坐,或希望更多的權力重新使用在不同情況下的工具,或者只是無法抗拒試圖做的很漂亮,那麼你可以嘗試編寫一個將給定的CSS選擇器編譯爲XPath的實用程序。只要你需要,你可以在一行中調用它。
如果JRuby路線對您開放,Hpricot就是一個絕妙的解決方案。
Wrt。 XPath是訪問XML文檔的「正確」方式......抱歉,但這是垃圾。有許多方法可以訪問XML文檔的元素:DOM遍歷,XPath,XQuery,CSS選擇器等等。 XPath當然很受歡迎,但CSS選擇器非常強大,假設您的XML文檔具有HTML語義。
如果你可以在CFML中使用PHP(如上所述),你可以採取這個優秀的 「jQuery的PHP的」 庫的優勢,phpQuery
完全CSS選擇器的支持,操作功能,遍歷等等。它應該適合您需要的功能。
希望它有幫助。
它可能更容易使用cQuery.com - cQuery.com是一個基於API的「內容查詢引擎」,通過使用CSS從實時網站提取內容。
您可以在您的應用程序中以編程方式使用它。
xml!= html。你無法用xpath可靠地解析html – Shawn 2010-02-12 16:39:20
如果XHTML有效,它就是XML的一個子集。這個問題清楚地表明它是他們正在產生的XHTML。 – 2010-02-23 11:18:38
@Shawn我一直使用XPath解析HTML,使用創建DOM的庫。您能否提供一個無法解析的有效HTML示例? – 2011-12-13 13:44:45