Вот некоторые сырые HTML
(взяты из большого файла):Jsoup выбрать элемент на глубине (уровень DOM от родителей)
<h1 class="contentHeader">This is the header</h1>
Используя traverse
метод JSoup, я уйду через DOM и расположен этот элемент, наряду с его атрибутами, а именно:
doc.traverse(new NodeVisitor() {
@Override
public void head(Node node, int depth) {
System.out.println(node);
System.out.println("Node depth: " + depth);
Attributes attrList = node.attributes();
for (Attribute attr: attrList) {
System.out.println(attr);
}
....
}
Это дает:
<h1 class="contentHeader">This is the header</h1>
Node depth: 8
class="contentHeader"
Что я сейчас пытаюсь сделать, так это написать однострочную реализацию для поиска этого элемента. Я читал через JSoup Cookbook, и кажется, что с помощью селектора eq
нужно указать глубину, но мне не повезло. Самое лучшее, что я могу придумать, это следующее:
System.out.println(doc.select("h1.contentHeader:eq(8)"));
Но это не выводит данные. Я либо пропускаю что-то важное, не понимая API, либо просто ошибаюсь.
Любой вход или совет были бы весьма признательны.
Благодарим за информацию! В этом случае элемент имеет класс, но большая часть документа написана без каких-либо классов или идентификаторов, поэтому я надеялся что-то сделать с позицией элемента в общей структуре. Я посмотрю и подумаю. Благодаря! – Tony