множественный селектор запросов jsoup

У меня есть следующий html:

<div>
    <h1>
        <a>1</a>
    </h1>
    <h2>
        <a>2<a>
    </h2>
    <h3>
        <a>3</a>
    </h3>
</div>

есть ли лучший способ, чтобы выбрать все якоря, чем див > Н1 > а див > Н2 > А див > Н3 > а. Я ищу что-то вроде div > (h1,h2,h3) > a

спасибо, Трунг!--2-->

4 ответов


можно добиться этого:

div.select("h1,h2,h3").select("a");

альтернативно, если вам просто нужны якоря внутри div:

div.select("a");

вы можете выбрать элементы h1,h2,h3 с помощью select ("h1,h2,h3")


да
Вы можете использовать что-то вроде этого

рассмотрим div является объектом элемента, который вы получаете, делая это

Element div = document.select("div").first();
Elements anchors = div.select("a");
for(Element e: anchors)
{
  System.out.println("Anchor Text "+e.text()+" HREF VALUE = "+e.attr("href"));
}

это напечатает все якоря в вашем div с текстом, который они содержат, и значением HREF


надеюсь, это поможет,

import java.io.File;
import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;


public class testXML {

public static void main(String[] args) throws IOException {
    File input = new File("D:\test.html");
    Document doc = Jsoup.parse(input, "UTF-8");
    Elements divTag = doc.select("div");
    for(Element value: divTag){
        System.out.println(value.text());
    }

    Elements divTagH = doc.select("div").select("h1,h2,h3");
    for(Element value: divTagH){
        System.out.println(value.text());
    }
}

}

выход:

1 2 3 Один Два 3