0

我需要从两个强大的 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>

因为我需要在元素数组中获取所有强元素和 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] 映射到强元素之前的所有 li 元素。我想我需要遍历树来获取这些 li 元素?有没有其他方法可以在选择查询中做到这一点?

4

1 回答 1

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 / LiElement按出现顺序的列表:

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

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

于 2012-08-27T12:52:55.427 回答