在使用 Jsoup 解析 HTML 中的 <ul>
和 <li>
元素时,可以使用 select()
方法和 CSS 选择器来选取它们。下面是一个简单的例子:
String html = "<ul><li>Item 1</li><li>Item 2</li><li>Item 3</li></ul>";
Document document = Jsoup.parse(html);
Elements ulElements = document.select("ul"); // 选取 ul 元素
for (Element ulElement : ulElements) {Elements liElements = ulElement.select("li"); // 在 ul 元素内部选取 li 元素for (Element liElement : liElements) {String text = liElement.text(); // 获取 li 元素的文本内容System.out.println(text);}
}
输出结果:
Item 1
Item 2
Item 3
在上述代码中,我们首先使用 Jsoup.parse()
方法将 HTML 字符串解析成一个 Document
对象。然后,我们使用 select()
方法和 CSS 选择器来选取 ul
元素,再使用 select()
方法和 CSS 选择器在 ul
元素内部选取 li
元素。最后,我们可以使用 text()
方法来获取 li
元素的文本内容。
如果要在 Jsoup 中解析 HTML 中某个 <li>
元素下的子 <div>
元素,可以在 li
元素后面使用空格
并跟上 CSS 选择器来选择 li
元素下的子元素。 下面是一个例子:
String html = "<ul><li><div>Div 1</div></li><li><div>Div 2</div></li></ul>";
Document document = Jsoup.parse(html);Elements lis = document.select("li");
for (Element li : lis) {Element div = li.selectFirst("div");System.out.println(div.text());
}
在上面的例子中,我们首先使用 Jsoup.parse()
方法将 HTML 字符串解析成一个 Document
对象。然后,我们使用 select()
方法和 CSS 选择器来选取 li
元素,并通过调用 selectFirst()
方法选择 li
下的第一个 div
元素,最后获取 div
元素的文本内容。
输出结果:
Div 1
Div 2
如果要在 Jsoup 中解析 HTML 中某个 <li>
元素下的子 <div>
元素下的子 <div>
元素下的子 <span>
元素,可以通过多次嵌套使用 CSS 选择器来选取子元素。下面是一个例子:
String html = "<ul><li><div><div><span>Span 1</span></div></div></li><li><div><div><span>Span 2</span></div></div></li></ul>";
Document document = Jsoup.parse(html);Elements lis = document.select("li");
for (Element li : lis) {Element span = li.selectFirst("div > div > span");System.out.println(span.text());
}
在上面的例子中,我们首先使用 Jsoup.parse()
方法将 HTML 字符串解析成一个 Document
对象。然后,我们使用 select()
方法和 CSS 选择器来选取 li
元素,并通过多次嵌套使用 CSS 选择器选择 li
前的子元素 div
、子元素 div
下的子元素 div
和子元素 div
下的子元素 span
,最后获取 span
元素的文本内容。
输出结果:
Span 1
Span 2
如果要解析 HTML 中某个 <li>
元素下的子 <div>
元素下的多个子 <div>
元素下的多个子 <span>
元素,我们同样可以使用 CSS 选择器来选取这些元素。
以下是一个例子:
String html = "<ul><li><div><div><span>Span 1</span></div><div><span>Span 2</span></div></div></li><li><div><div><span>Span 3</span></div><div><span>Span 4</span></div></div></li></ul>";
Document document = Jsoup.parse(html);Elements lis = document.select("li");
for (Element li : lis) {Elements spans = li.select("div > div > span");for (Element span : spans) {System.out.println(span.text());}
}
在上面的例子中,我们首先使用 Jsoup.parse()
方法将 HTML 字符串解析成一个 Document
对象。然后,我们使用 select()
方法和 CSS 选择器来选取 li
元素,并通过 CSS 选择器选择 li
前的子元素 div
、子元素 div
下的多个子元素 div
和多个子元素 div
下的子元素 span
,最后获取每个 span
元素的文本内容。对于每个 li
元素,我们都可以通过 select()
方法获取其下的所有符合条件的 span
元素,再通过 for
循环逐个输出文本内容。
输出结果:
Span 1
Span 2
Span 3
Span 4
如果要解析 HTML 中某个 <li>
元素下的子 <div>
元素下的多个子 <div>
元素下的子 <span>
元素中 class
属性为 num
的元素,我们可以将 CSS 选择器更改为 li > div > div > div > span.num
。
以下是一个例子:
String html = "<ul><li><div><div><div><span class='num'>1</span><span>2</span></div><div><span class='num'>3</span><span>4</span></div></div></div></li><li><div><div><div><span class='num'>5</span><span>6</span></div><div><span class='num'>7</span><span>8</span></div></div></div></li></ul>";
Document document = Jsoup.parse(html);Elements lis = document.select("li");
for (Element li : lis) {Elements nums = li.select("div > div > div > span.num");for (Element num : nums) {System.out.println(num.text());}
}
在上面的例子中,我们在 select()
方法中将 CSS 选择器更改为 li > div > div > div > span.num
,来选取 li
元素下的子元素 div
,子元素 div
下的多个子元素 div
,多个子元素 div
下的子元素 span
,其 class
属性为 num
的元素。接着,我们通过 for
循环逐个输出符合条件的 span
元素的文本内容。
输出结果:
1
3
5
7