任何人都可以推荐一个java库来允许我通过URL进行XPath查询吗? 我试过JAXP没有成功。
谢谢。
答案 0 :(得分:8)
网上记录了几种不同的方法:
使用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