2010-07-29 29 views
2

任何人都可以推薦我一個Java庫來允許我通過URL進行XPath查詢嗎? 我試過JAXP沒有成功。用Java在XPath中查詢HTML的庫?

謝謝。

+0

請參閱http://stackoverflow.com/questions/9022140/using-xpath-contains-against-html-in-java-不完全重複,因爲它會詢問特定的XPath功能,但那裏有更好的答案。 – 2013-01-07 00:34:58

+0

@Reonarudo我和你問這個問題時的情況一樣。答案中有很多可能的建議/解決方案,但我想知道您使用了哪種解決方案(庫),是否按照您希望的方式工作? – 2015-06-20 19:08:10

+0

@UtherPendragon對不起,但這是很久以前,我不記得哪個項目是這樣的。無論如何,現在應該有更新/更好的圖書館。 – 2015-06-23 12:14:52

回答

6

jsoup, Java HTML Parser與jQuery的語法方式非常相似。

+0

它是否執行XPath查詢? – 2010-07-30 01:08:20

+0

我不確定。它執行更簡單的查詢,這是基於xpath的。你可以閱讀一些文檔,並且有很多很酷的例子,解釋如何運行這些查詢。 – 2010-07-31 08:17:56

+1

jsoup(至少在版本1.7.3中)不支持XPath。 – prasopes 2014-01-11 20:30:22

0

我已經使用JTidy將HTML製作成適當的DOM,然後使用普通的XPath來查詢DOM。

如果您想要進行跨文檔/跨URL查詢,最好將JTidy與XQuery一起使用。

+0

去嘗試一下。 – 2010-07-30 01:09:05

1

您可以使用TagSoup與撒克遜一起。通過這種方式,您可以簡單地替換任何與TagSoup一起使用的XML SAX解析器,XPath 2.0或XSLT 2.0或XQuery 1.0實現像往常一樣工作。

+0

即將嘗試。 – 2010-07-30 01:08:47

7

有幾種不同的方法來此文件在網絡上:

使用HtmlCleaner

使用Jericho

我曾嘗試這些方法,即的HTMLParser加上Java的DOM解析器,並JSoup加Jaxen的,但效果最好的組合的幾個不同的變化是HtmlCleaner加上Java DOM解析器。下一個最好的組合是傑里科加Jaxen。

+0

請注意,在Android 4.2.2上,與jSoup 1.7.2相比,HtmlCleaner 2.5的速度要慢4倍。 – yanchenko 2013-05-25 17:16:33

+1

請注意,HtmlCleaner僅支持XPath 1.0。 – sibbl 2016-04-19 13:08:11

+0

HTML Cleaner + DOM Serializer + Threading =內存泄漏 – 2016-06-29 17:22:03