2010-07-29 74 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