Jsoup - 如何在固定的html标记之间提取所有元素

时间:2012-08-20 20:18:52

标签: jsoup

我需要从两个强大的html标记元素

之间的html标记中提取文本
<h6>Main Heading</h6>
<ul>
<strong>Sub heading 1</strong>
<li>text1</li>
…
<li>textn</li>
<strong>Sub heading 2</strong>
<li>text1</li>
…
<li>textn</li>
</ul>

因为我需要在Elements数组中获取所有强元素和li元素(文本)。我试图获得所有强大的元素

Element ulElement = doc.select("h6:matchesOwn(Main Heading).first();
Elements subHeadings = ulElement.select("strong");
Elements subLIElements = ulElement.select("strong ~ li");

所以我有subHeadings变量中的所有子标题和subLIElements变量中的所有li元素......但我需要将这两个关联起来,因为subHeadings [0]映射到strong元素之前的所有li元素。我想我需要遍历树来获得这些li元素?我可以在选择查询中执行此操作吗?

1 个答案:

答案 0 :(得分:0)

  

获取Elements数组中的所有strong和li元素(文本)

您是否只需要每个元素的文本,Element数组或Elements数组?

仅限文字:

List<String> result = new ArrayList<>();
Elements elements = doc.select("strong, li");

for( Element e : elements )
{
    result.add(e.text());
}

结果: [子标题1,text1,textn,子标题2,text1,textn]

在此示例中,elements是一个列表,按发生顺序包含所有Strong / Li Element

<strong>Sub heading 1</strong>
<li>text1</li>
<li>textn</li>
<strong>Sub heading 2</strong>
<li>text1</li>
<li>textn</li>  

也许您可以使用每个元素的索引来排除不需要的东西。