Почему Jsoup не может выбрать элемент td? - PullRequest
1 голос
/ 02 ноября 2011

Я сделал небольшой тест (с Jsoup 1.6.1):

String s = "" +Jsoup.parse("<td></td>").select("td").size();
System.out.println("Selected elements count : " + s);

Он выводит:

Selected elements count : 0

Но он должен вернуть 1, потому что я проанализировал html с tdэлемент.Что не так с моим кодом или в Jsoup есть ошибка?

Ответы [ 3 ]

3 голосов
/ 02 ноября 2011

Поскольку Jsoup является HTML5-совместимым парсером , и вы ввели его с недопустимым HTML. <td> должен войти внутрь как минимум <table>.

int size = Jsoup.parse("<table><td></td></table>").select("td").size();
System.out.println("Selected elements count : " + size);
1 голос
/ 21 декабря 2011
String url = "http://foobar.com";
Document doc = Jsoup.connect(url).get();
Elements td = doc.select("td");
0 голосов
/ 23 апреля 2012

Jsoup 1.6.2 позволяет анализировать с разным анализатором, и предоставляется простой анализатор XML.С помощью следующего кода я могу решить мою проблему.Позже вы сможете разобрать свой фрагмент с помощью HTML, чтобы получить действительный HTML.

// Jsoup 1.6.2
String s = "" + Jsoup.parse("<td></td>", "", Parser.xmlParser()).select("td").size();
System.out.println("Selected elements count : " + s);
...