JSoup — выбрать все комментарии

Я хочу выбрать все комментарии из документа с помощью JSoup. Я хотел бы сделать что-то вроде этого:

for(Element e : doc.select("comment")) {
   System.out.println(e);
}

Я пробовал это:

for (Element e : doc.getAllElements()) {
  if (e instanceof Comment) {

  }

}

Но в eclipse возникает следующая ошибка «Несовместимые типы условных операндов Element и Comment».

Ваше здоровье,

Пит


person Community    schedule 31.10.2010    source источник


Ответы (2)


Поскольку Comment extends Node вам нужно применить instanceof к объектам узла, а не к элементам, например:

    for(Element e : doc.getAllElements()){
        for(Node n: e.childNodes()){
            if(n instanceof Comment){
                System.out.println(n);
            }
        }
    }
person dogbane    schedule 31.10.2010

В Kotlin вы можете получить через Jsoup каждый Comment из всего Document или определенный Element с помощью:

fun Element.getAllComments(): List<Comment> {
  return this.allElements.flatMap { element ->
    element.childNodes().filterIsInstance<Comment>()
  }
}
person vonox7    schedule 10.10.2019