使用Java中的XPath查询HTML的库?

时间:2010-07-29 09:58:38

标签: java html xhtml xpath

任何人都可以推荐一个java库来允许我通过URL进行XPath查询吗? 我试过JAXP没有成功。

谢谢。

5 个答案:

答案 0 :(得分:8)

网上记录了几种不同的方法:

使用HtmlCleaner

使用Jericho

我尝试了这些方法的一些不同变体,即HtmlParser加上Java DOM解析器,以及JSoup加Jaxen,但最好的组合是HtmlCleaner加上Java DOM解析器。下一个最佳组合是杰里科加Jaxen。

答案 1 :(得分:6)

jsoup, Java HTML Parser与jQuery语法方式非常相似。

答案 2 :(得分:1)

您可以将TagSoup与Saxon一起使用。这样,您只需替换任何与TagSoup一起使用的XML SAX解析器,XPath 2.0或XSLT 2.0或XQuery 1.0实现就可以正常工作。

答案 3 :(得分:0)

我已经使用JTidy将HTML转换为适当的DOM,然后使用普通的XPath来查询DOM。

如果您想进行跨文档/跨URL查询,最好将JTidy与XQuery一起使用。

答案 4 :(得分:0)

使用Xsoup。根据文档,它比HtmlCleaner更快。例子

 @Test
    public void testSelect() {

        String html = "<html><div><a href='https://github.com'>github.com</a></div>" +
                "<table><tr><td>a</td><td>b</td></tr></table></html>";

        Document document = Jsoup.parse(html);

        String result = Xsoup.compile("//a/@href").evaluate(document).get();
        Assert.assertEquals("https://github.com", result);

        List<String> list = Xsoup.compile("//tr/td/text()").evaluate(document).list();
        Assert.assertEquals("a", list.get(0));
        Assert.assertEquals("b", list.get(1));
    }

链接到Xsoup-https://github.com/code4craft/xsoup