Поддерживает ли jsoup xpath? Проделана определенная работа, связанная с добавлением поддержки xpath в jsoup https://github.com/jhy/jsoup/pull/80. Работает ли он? Как я могу использовать его? Ответ 1 JSoup пока не поддерживает XPath, но вы можете попробовать XSoup - "Jsoup с XPath". Здесь приведен пример из проектов сайта Github (ссылка): @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)); } Там вы также найдете список функций и выражений XPath, которые поддерживаются XSoup. Ответ 2 Пока нет, но проект JsoupXpath сделал его. Например, String xpath="//div[@id='post_list']/div[./div/div/span[@class='article_view']/a/num()>1000]/div/h3/allText()"; String doc = "..."; JXDocument jxDocument = new JXDocument(doc); List<Object> rs = jxDocument.sel(xpath); for (Object o:rs){ if (o instanceof Element){ int index = ((Element) o).siblingIndex(); System.out.println(index); } System.out.println(o.toString()); }
Ответ 1 JSoup пока не поддерживает XPath, но вы можете попробовать XSoup - "Jsoup с XPath". Здесь приведен пример из проектов сайта Github (ссылка): @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)); } Там вы также найдете список функций и выражений XPath, которые поддерживаются XSoup.
Ответ 2 Пока нет, но проект JsoupXpath сделал его. Например, String xpath="//div[@id='post_list']/div[./div/div/span[@class='article_view']/a/num()>1000]/div/h3/allText()"; String doc = "..."; JXDocument jxDocument = new JXDocument(doc); List<Object> rs = jxDocument.sel(xpath); for (Object o:rs){ if (o instanceof Element){ int index = ((Element) o).siblingIndex(); System.out.println(index); } System.out.println(o.toString()); }