Я разбор файла HTML с вложенными неупорядоченными списками, вот пример:Разбора вложенных HTML неупорядоченных списков с Jsoup
<ul>
<li class="category_x">xyz abc
<ul>
<li>foo 123 bar</li>
<li>456 bar foo</li>
</ul>
</li>
<li class="category_x">aaa bbb ccc
<ul>
<li>xxx yyy zzz</li>
<li>123 abc 456</li>
</ul>
</li>
</ul>
Я заинтересован в отношениях li > ul > li
(думает, что у него в качестве объектов Jsoup типа Element
: grandParentNode
>parentNode
>eNode
), но используя метод grandParentNode.text()
Я получаю также текст в целом вложенном списке <ul>
(в комплекте eNode.text()
).
// getting the triplets
Elements triplets = doc.select("li > ul > li");
// print the triplet
for (Element eNode : triplets)
{
Element parentNode = eNode.parent();
Element grandParentNode = parentNode.parent();
System.out.println("Current node: " + eNode.text());
System.out.println("Grand parent: " + grandParentNode.text());
}
Выход:
Current node: foo 123 bar
Grand parent: xyz abc foo 123 bar 456 bar foo
Current node: 456 bar foo
Grand parent: xyz abc foo 123 bar 456 bar foo
Current node: xxx yyy zzz
Grand parent: aaa bbb ccc xxx yyy zzz 123 abc 456
Current node: 123 abc 456
Grand parent: aaa bbb ccc xxx yyy zzz 123 abc 456
Я хотел бы, чтобы это было:
Current node: foo 123 bar
Grand parent: xyz abc
Current node: 456 bar foo
Grand parent: xyz abc
Current node: xxx yyy zzz
Grand parent: aaa bbb ccc
Current node: 123 abc 456
Grand parent: aaa bbb ccc
Посмотрев на документацию Jsoup кажется мне нужно изменить HTML для того, чтобы получите эти строки, включенные в что-то вроде атрибута value=""
, но я не могу изменить HTML ... Кроме того, все эти <li class="category_x">
повторяются везде с тем же значением на каждом узле, который не является «li
лист» дерева, поэтому они не очень помогают в фильтрации данных.
Я уже пробовал такие вещи, как doc.select("li:lt(1) > ul > li");
, но это не работает, проблема структура HTML и как я использую метод text()
из Element
класса Jsoup. Дело в том, что я понятия не имею, как избежать text()
.
Любая идея?
Благодаря