DevRj
DevRj

Reputation: 468

select each of the html elements in jsoup

I'm a beginner in jsoup and my html document looks something like this :

<div class="myclass">
<ul>
<li style="width: 32%;border-right: 1px solid #ddd;"><img src="image.png"<br>val </li>
<li><img src="/vinfo/imgFiles/no.png"><br>val2 </li>
<li><img src="/vinfo/imgFiles/no.png"><br>val3 </li>
<li class="noborder" style="border: 0px;"><img src="/vinfo/imgFiles/in-the-wild.png"><br>val4 </li>
</ul>
</div>

I want to select the value of every <li> element, however all the elements are being stored at once in an element(jsoup); here's what i tried in order to test the output before storing in a list :

Elements elt = page.select("div.iconDetails > ul");
int = 0;
for (Element el : elt){
    System.out.println(el.select("li"));
    i++;
    System.out.println(i);
}

And the result is as follows :

<li style="width: 32%;border-right: 1px solid #ddd;"><img src="/vinfo/imgFiles/trojan.png"><br>val </li>
<li><img src="/vinfo/imgFiles/no.png"><br>val1</li>
<li><img src="/vinfo/imgFiles/no.png"><br>val2 </li>
<li class="noborder" style="border: 0px;"><img src="/vinfo/imgFiles/in-the-wild.png"><br>val3 </li>
1

what i would like to have is :

<li style="width: 32%;border-right: 1px solid #ddd;"><img src="/vinfo/imgFiles/trojan.png"><br>val </li>
1
<li style="width: 32%;border-right: 1px solid #ddd;"><img src="/vinfo/imgFiles/trojan.png"><br>val </li>
2
<li style="width: 32%;border-right: 1px solid #ddd;"><img src="/vinfo/imgFiles/trojan.png"><br>val </li>
3
<li class="noborder" style="border: 0px;"><img src="/vinfo/imgFiles/in-the-wild.png"><br>val3 </li>
4

The counter is just to make sure i have 4 results.

Upvotes: 1

Views: 78

Answers (2)

Santhosh Rajkumar
Santhosh Rajkumar

Reputation: 121

Try this code:

Elements elts = page.select("div.iconDetails > ul > li");
for (int i= 0; i<elts.size();i++){
     Element elt = elts.get(i);
     System.out.println(elt.text());

}

Upvotes: 2

DevRj
DevRj

Reputation: 468

So all i had to do select "ul>li" like this :

Elements elt = page.select("div.iconDetails > ul > li");
int = 0;
for (Element el : elt){
System.out.println(el);
i++;
System.out.println(i);
} 

And it worked like a charm

Upvotes: 1

Related Questions